Отправить форму для другого действия с потоком Typo3

У меня есть страница с формой для создания пользователей. У пользователя есть хобби, которое можно создать на той же странице, нажав на вторую кнопку, которая открывает страницу для создания хобби. После создания хобби, предыдущая пользовательская форма должна отображаться с введенным пользователем вводом, прежде чем перейти на страницу хобби.

Есть ли способ сделать что-то вроде потока / жидкости typo3 без использования AJAX?

Я попытался передать входные данные другому действию, нажав кнопку createHobby -> Действие перенаправляет на новую страницу хобби, где пользователь может создать хобби, и после создания оно должно перенаправить обратно на форму пользователя с уже заполненным поля ввода пользователем.

Я использовал…

<input type='submit' value='Create' formaction='/hobby/create' />`

чтобы добиться этого, но, кажется, есть некоторые проблемы с Uris … Я получаю следующую ошибку:

#1301610453: Could not resolve a route and its corresponding URI for the given parameters.

0

Решение

Я думаю, что использование атрибута formaction не является хорошим решением для каждого случая, так как не поддерживается IE < 10 как вы можете посмотреть здесь. Я думаю, что JavaScript бэкпорт также следует учитывать (динамически изменить action атрибут формы при нажатии на вторую кнопку, перед фактической отправкой формы).

Что касается вашей ошибки, вы должны нет — и, вероятно, никогда — не использовать прямой ввод HTML, вместо этого попробуйте сосредоточиться на Fluid ViewHelpers, которые позволяют TYPO3 создавать правильный ввод HTML.

Попробуйте это вместо этого:

<f:form.submit value="Create" additionalAttributes="{formaction: '{f:uri.action(controller: \'hobby\', action: \'create\')}'}" />
1

Другие решения

Вы можете сделать $this->forward(...) в initializeActionв зависимости от параметра вашего действия.

Давайте представим, что ваше действие формы по умолчанию — «создать». Так что вам нужно initializeCreateAction:

public function initializeCreateAction()
{
if ($this->arguments->hasArgument('createHobby')) {
$createHobby = $this->request->getArgument('createHobby');
if ($createHobby) {
$this->forward('create', 'Hobby', NULL, $this->request->getArguments());
}
}
}

Теперь вы должны назвать свой вход createHobby и назначьте свой createAction этот параметр:

В жидкости:

<f:form.button type="submit" name="createHobby" value="1">Create Hobby</f:form.button>

В вашем контроллере:

public function createAction($formData, $createHobby = false)
{
...
}
1

Можете ли вы объяснить что-то еще … то, что вы показываете, не имеет ничего общего с typo3, я не знаю, куда вы это вставили, какую версию typo3, используя какое-либо дополнительное расширение?

0
По вопросам рекламы [email protected]