TYPO3 8.7/9.5 pibase $_POST недоступен?

Я переделываю некоторые старые расширения проекта typo3. проблема в том, что мы должны оставаться на этой структуре pibase, так как она в любом случае поддерживается ядром. так что это расширение выполняет некоторые простые операции CRUD, в моем случае вставку на основе отправленных значений через $_POST. поэтому старое расширение просто напрямую использовало $_POST, которое больше не поддерживается, я думаю, с момента реализации запроса/ответа PSR-7.

но теперь, как я могу получить доступ к отправленным значениям, поскольку $_POST больше не доступен, и у меня нет запроса $this->, потому что расширение расширяет AbstractPlugin.

edit: также мы не внутри main(), кодовый блок находится внутри sendMail()

я также понятия не имею, откуда вызывается sendMail, поскольку нет доступной документации для pibase.

помощь очень ценится


person netzding    schedule 02.06.2020    source источник
comment
разве $_get и $_post не были в $piVars в piBase? api.typo3.org/master/   -  person Jonas Eberle    schedule 02.06.2020
comment
вы думали так же, но $this-›piVars просто пустой всю дорогу   -  person netzding    schedule 02.06.2020


Ответы (1)


вы можете получить доступ к параметрам GET и POST с помощью \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('name')

но по соображениям безопасности они могут быть отфильтрованы.

у нас есть концепция cHashes, которые защищают сайт от введенного параметра. все параметры должны быть известны и защищены хешем. TYPO3 запоминает параметр cHash. если указан cHash, параметры извлекаются из базы данных, а параметры, переданные серверу, игнорируются.

для форм (таких как ext:form или ext:powermail) cHash не генерируется, и поля формы могут быть обработаны.

если у вас есть «голые» формы и простые php-файлы для обработки, вам следует перейти на расширение формы, где вы можете использовать существующие финишеры и можете добавлять дополнительные финишеры (и валидаторы), для этих финишеров данные формы защищены от внедрения и вам не нужно обращаться к $_GET или $_POST.

РЕДАКТИРОВАТЬ:
Вот вопрос/ответ, как отключить вычисление cHash для значений одиночной формы: TYPO3 - Деактивация cHash в собственном расширении - 8LTS

person Bernd Wilke πφ    schedule 02.06.2020
comment
в моем случае это файл tx_pluginName_pi1.php для логики с main() и sendMail(), res/template.html для шаблона и так далее... шаблон содержит обычный ‹form›‹input...‹/form ›. я понимаю ваш ответ, но похоже, что это не вариант для рефакторинга в большем масштабе, так каковы мои варианты с ...lUtility::_GP('name')? потому что это и ...lUtility::_POST('name')/etc... также пусты. есть ли конфигурация, чтобы не отфильтровывать эти параметры? - person netzding; 02.06.2020
comment
Добавил ссылку на мой ответ - person Bernd Wilke πφ; 02.06.2020
comment
вы также можете добавить \TYPO3\CMS\Core\Utility\GeneralUtility::_POST() и \TYPO3\CMS\Core\Utility\GeneralUtility::_GET() к своему ответу - person netzding; 17.06.2020