2016-09-06 10 views
0

Я написал очень простое расширение в typo3 v7.6.11 с расширителем, в котором посетитель может попросить такси.Плагин fronto fronto3, используйте данные _POST в контроллере

все работает, только мне нужно сделать запрос более привлекательным, задав точку приема и точку выпадения ... этот запрос переходит к фактической форме, подобной этой в шаблоне (requestPid - это идентификатор страницы с формой):

<f:form pageUid="{settings.additional.requestPid}" action="form" name="request" object="{Request}"> 
    <f:render partial="Ticket/RequestNewFields" /> 
    <f:form.submit value="{f:translate(key: 'tx_wmnltickets_domain_model_ticket.admin.continue')}" /> 
</f:form> 

но formAction в контроллере фактически не спросить что-нибудь от модели (я пробовал);

/** 
* action form 
* 
* @return void 
*/ 
public function formAction() { 
    $this->request->getArguments(); 
} 

запрос действительно отправить $_POST, но я не вижу способа, чтобы получить его в виде ... , если вы хотели бы видеть больше кода, чтобы понять, просто спросите, я не знаю, что вы 'd look for ...

ответ

2

Ваша форма действия должна была параметр запроса от вас образуют:

/** 
* action form 
* 
* @param array $request 
* 
* @return void 
*/ 
public function formAction($request) { 
} 

Затем вы можете получить доступ к данным с $request['origin']

Я не уверен, разрешена ли переменная $request в качестве аргумента. Возможно, вы должны переименовать его в функции и в ваш шаблон жидкости, если он не работает.

+0

Это предпочтительный и рекомендуемый способ передачи аргументов в любое действие. Это заставляет параметр быть правильно изолированным в поддиапазоне аргументов URL в GET, а также POST. Во всех случаях нужно избегать доступа к '$ this-> request-> getArguments()' в контроллере (есть гораздо более подробное объяснение, почему, но по существу: аргументы там не проверяются или не конвертируются). Поэтому в * каждом * отдельном случае, когда вам нужны ваши контроллеры для передачи/получения аргументов: правильно объявляйте аргументы на контроллере и используйте эти имена при передаче аргументов. –

+0

'request' не является зарезервированным именем аргумента, но по соображениям ясности его следует избегать как имя DTO (объект передачи данных). –

+0

Я использовал newTicket как переменную, чтобы быть уверенным ... но как мне получить доступ к '$ newTicket ['origin']' в моем жидком шаблоне ?? единственный способ, которым переменная кажется доступной, - это $ this-> view-> assign ('ticket', $ newTicket); 'в функции formAction ... но не значения ... – webMan

0

Вы создали расширение с помощью строителя? Самый простой способ - создать в построителе поля (пикап-точка, dropoff-point), затем создать createAction или newAction (не уверен, как он вызывается в построителе). Это позволит создать шаблон для createAction, где вы можете просто скопировать/вставить <f:form...

Существует способ, чтобы получить доступ непосредственно POST/GET параметров (Это не рекомендуется использовать его непосредственно, когда вы можете сделать это с чистой Extbase способ):

$myVar = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('myVar'); 
+0

thx 4 the intrest: да, это сделано с строителем, но это своего рода перекресток, у меня есть эта маленькая форма с двумя полями (точка пикапа, точка отбрасывания) и полная форма, которая начинается с этих двух и имеет еще 8 или 10 ... – webMan

+0

Мне просто нужно, чтобы эти два были переправлены в полную форму, там будет зарегистрировано ... – webMan

 Смежные вопросы

  • Нет связанных вопросов^_^