流体模板和TYPO3:表单中的表单 - 提交不再起作用

时间:2018-02-07 12:24:37

标签: typo3 fluid

如果我在表单中插入表单,则在"外部"中提交按钮。形式不再起作用了。

简短代码示例:

<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>

所以基本上(这是我真实生活项目的一个非常简化的版本)我希望能够更改textfield和checkbox的值,然后传递给updateAction。每个循环只生成多个条目,因此可以说包含该特定对象的删除按钮的多个表单。我可以通过__identity来处理这些对象,并且可以通过它们旁边的按钮删除它们,这不是问题。

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

有没有解决方法呢?

2 个答案:

答案 0 :(得分:2)

表单内的表单不起作用(也不是正确的HTML)。

更长的版本可回答您未提出的问题:要在此处实现目标,请使用f:link.action创建指向delete控制器操作的链接,并将{example}对象作为参数。然后,如果你愿意,链接的样式看起来像一个按钮。

答案 1 :(得分:1)

与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>

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