使用typo3流程将表单提交给不同的操作

时间:2016-09-29 11:44:23

标签: php fluid typo3-flow

我有一个页面,其中包含用于创建用户的表单。用户有一个爱好,可以通过单击打开页面以创建业余爱好的第二个按钮在同一页面上创建。创建业余爱好后,在进入业余爱好页面之前,应显示先前的用户表单并插入用户输入。

有没有办法在不使用AJAX的情况下使用typo3 flow / fluid?

我尝试通过点击createHobby按钮将输入提交给其他操作 - >该操作会重定向到新的爱好页面,用户可以在其中创建爱好,创建后它应该重定向回用户表单,并且用户已经填写了输入字段。

我用过......

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

要实现这一点,但似乎uris有一些问题...我得到以下错误:

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

3 个答案:

答案 0 :(得分:1)

我认为使用属性formaction对于每种情况都不是一个好的解决方案,因为它不支持 IE&lt; 10 尽可能see here。我认为还应考虑JavaScript反向端口(在实际提交表单之前单击第二个按钮时动态更改表单的action属性。)

关于您的错误,您应该不 - 并且可能永远不会 - 使用直接HTML输入,而是尝试关注Fluid ViewHelpers,它允许TYPO3创建正确的HTML输入。

请改为尝试:

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

答案 1 :(得分: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)
{
 ...
}

答案 2 :(得分:0)

你能解释一下吗......你所展示的内容与typo3无关,我不知道你在哪里插入了什么版本的typo3,使用任何扩展额外的?