如何处理Symfony2中另一个控制器的表单?

时间:2014-02-26 00:00:37

标签: php forms validation symfony

我有两个独立的控制器Controller1:somethingActionController2:processForm

somethingAction中,我创建了一个表单,并将其操作(网址)设置为processForm的网址。提交somethingAction视图中的表单后,POST数据将转到processForm

processForm中,我创建相同的表单,验证并处理它。一切都很好,除非表格无效。因为为了显示错误以及用户输入的数据,您需要呈现与somethingAction完全相同的视图。

让我感到遗憾的是,如果不复制代码(流程表单部分),我就无法重复使用这样的表格,即使它是3-4行,我希望能有这种功能。

有一种简单的方法吗?没有AJAX。我错过了什么吗?

如果嵌入控制器可以重定向,可以这样做。

1 个答案:

答案 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)