如果我在表单中插入表单,则在"外部"中提交按钮。形式不再起作用了。
简短代码示例:
<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来处理这些对象,并且可以通过它们旁边的按钮删除它们,这不是问题。
但是,如果我将其他表单及其各自的提交按钮放入此表单,则更新的提交按钮不再起作用。
有没有解决方法呢?
答案 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>
通过此设置,您无法执行删除操作,因为您需要提交按钮来执行以下两项操作:
请求delete
操作:
<f:form.button type="submit" name="action" value="delete">Delete</f:form.button>
指向要解决的实体:
<f:form.button type="submit" name="example" value="{example}">Do something with {example.title}</f:form.button>
您应该添加单独的视图来编辑单个example
对象。然后,当前视图将成为包含指向该编辑视图的链接的列表。在该视图中,您的表单object
变为单个example
,允许您为每个action
添加两个提交按钮。