我有两个独立的控制器Controller1:somethingAction
和Controller2:processForm
。
在somethingAction
中,我创建了一个表单,并将其操作(网址)设置为processForm
的网址。提交somethingAction
视图中的表单后,POST数据将转到processForm
。
在processForm
中,我创建相同的表单,验证并处理它。一切都很好,除非表格无效。因为为了显示错误以及用户输入的数据,您需要呈现与somethingAction
完全相同的视图。
让我感到遗憾的是,如果不复制代码(流程表单部分),我就无法重复使用这样的表格,即使它是3-4行,我希望能有这种功能。
有一种简单的方法吗?没有AJAX。我错过了什么吗?
如果嵌入控制器可以重定向,可以这样做。
答案 0 :(得分:0)
可能会有所帮助的两件事:
1)向下滚动到文档中的“创建表单类”,以避免重复表单:
http://symfony.com/doc/current/book/forms.html#creating-form-classes
2)一个常见的模式(在许多情况下我会说更好)是发布到最初生成表单的同一个控制器动作。也就是说,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)