Symfony2 - 一个动作中的多个表单

时间:2011-11-03 16:53:09

标签: forms action symfony

我实现了一个页面来创建实体的实例和与此相关的用户。我的问题是在提交后绑定请求。

现在我有了这个:

$formA = $this->createForm(new \MyApp\ABundle\Form\AddObjectForm());
$formB = $this->createForm(new \MyApp\UserBundle\Form\AddUserForm());

if ($request->getMethod() == 'POST')
{
    $formA->bindRequest($request);
    $formB->bindRequest($request);

    if ($formA->isValid() && $formB->isValid())
    {
    }
    // ...
}

使用 formA formB 扩展 AbstractType 。但是,$formA->isValid()自然会返回false。例如,如何“切断”请求?

2 个答案:

答案 0 :(得分:7)

如果您的表单是相关的,需要立即处理和验证,请考虑使用embedded forms。否则,请为每个表单使用单独的操作。

如果您需要提供选择字段以从现有用户中选择用户,请考虑使用entity type field

答案 1 :(得分:5)

我知道答案已经很长时间了,但也许如果有人在寻找它,这可能会有所帮助。

我有两种形式:user_form和company_form,并且提交发生在控制器的同一个功能中。我可以通过以下代码知道提交表单:

    if ($request->getMethod() == 'POST') {

       $data = $request->request->all();

        if (isset($data['user_form'])) //This if means that the user_form has been submit.
        { 

company_form将通过else。