流体模板和 TYPO3:表单中的表单 - 提交不再有效

fluid template and TYPO3: Form inside a form - submit doesn't work anymore

如果我在一个表单中插入一个表单,"outer" 表单中的提交按钮将不再起作用。

短代码示例:

<f:form action="update" name="examples" object="{examples}" >
  <f:for each="{examples}" as="example"

    <f:form.textfield property="name" value="" />
    <f:form.checkbox property="checked" value="1" checked="0" /><br />
    <f:form action="delete" name="example" object="{example}" >
        <f:form.submit value="delete" />
    </f:form>
<f:form.submit value="update" />
</f:form>

所以基本上(这是我现实生活项目的一个极其简化的版本)我希望能够更改文本字段和复选框的值,然后将它们传递给 updateAction。 for each 循环仅生成多个条目,因此多个表单仅包含该特定对象的删除按钮可以这么说。我可以通过 __identity 来解决这些对象,并且可以通过它们旁边的按钮来删除它们,这不是问题所在。

但是如果我将其他表单及其各自的提交按钮放入此表单中,用于更新的提交按钮将不再起作用。

有什么解决办法吗?

表格中的表格不起作用(也不正确HTML)。

更长的版本回答了你没有问的问题:为了在这里实现你的目标,使用 f:link.action 创建一个 link 到 delete 控制器动作,你的 {example} 对象作为参数。然后根据需要将 link 样式设置为看起来像一个按钮。

与TYPO3或Fluid完全无关你应该知道嵌套形式是不允许的。

但是,至少您的代码的编辑部分可以通过单一表单生效:

<f:form action="update" name="examples" object="{examples}" >

  <f:for each="{examples}" as="example" iteration="i">
    <f:form.textfield property="{i}.name"/>
    <f:form.checkbox property="{i}.checked" value="1"/>
  </f:for>

  <f:form.submit value="update"/>
</f:form>

使用此设置,不可能同时执行删除操作,因为您需要一个执行以下两项操作的提交按钮:

  1. 请求 delete 操作:

    <f:form.button type="submit" name="action" value="delete">Delete</f:form.button>

  2. 指向要地址的实体:

    <f:form.button type="submit" name="example" value="{example}">Do something with {example.title}</f:form.button>

您应该添加一个单独的视图来改为编辑单个 example 对象。当前视图然后变成一个列表,其中包含指向该编辑视图的链接。在该视图中,您的表单 object 变为单个 example,允许您为每个 action.

添加两个提交按钮