我有两个独立的控制器Controller1:somethingAction和Controller2:processForm。
在somethingAction中,我创建了一个表单,并将它的动作( url )设置为processForm的url,当somethingAction视图中的表单提交时,POST数据就会转到processForm。
在processForm中,我创建了相同的表单,对其进行验证和处理。除了表单无效之外,一切都运行得很好。因为为了显示错误和用户输入的数据,您需要呈现与somethingAction完全相同的视图。
如果不复制代码(流程表单部分),我就不能重用这样的表单,即使它只有3-4行,我也希望有这样的功能。
有没有一种简单的方法呢?没有AJAX。我是不是遗漏了什么?
如果嵌入控制器可以重定向,就可以做到这一点。
发布于 2014-02-26 08:54:08
有两件事可能会有帮助:
1)向下滚动到文档中的“创建窗体类”,了解如何避免复制窗体:
http://symfony.com/doc/current/book/forms.html#creating-form-classes
2)一个常见的模式(我会说在许多情况下更好)是post到最初生成表单的同一个控制器操作。也就是说,Controller1:somethingAction在Controller1:somethingAction上发布内容。然后,您需要一些逻辑(基本上是IF语句)来检测表单何时提交,然后处理表单,或者显示错误。在伪代码中,它可能如下所示:
function somethingAction()
if form.isValid()
process form
redirect or render a success screen
else
render form (with or without errors)https://stackoverflow.com/questions/22028908
复制相似问题