Php 如何合并和处理2个symfony表单?

Php 如何合并和处理2个symfony表单?,php,symfony,Php,Symfony,我有2张symfony表格: SignupFormType和HouseRentFormType 注册表格如下所示: <form ..> <input name='email' .. /> <input name='pass' .. /> .. </form> .. 房屋租金表如下: <form ..> <input name='city' .. /> <input name='price' .. /> &l

我有2张symfony表格:

SignupFormType
HouseRentFormType

注册表格如下所示:

<form ..>
<input name='email' .. />
<input name='pass' .. />
..
</form>

..
房屋租金表如下:

<form ..>
<input name='city' .. />
<input name='price' .. />
</form ..>
<form ..>
// house rent info:
<input name='city' .. />
<input name='price' .. />

//registration info:
<input name='email' .. />
<input name='pass' .. />
<input type='submit' />
</form ..>

我想将它们组合起来,使它们看起来像这样:

<form ..>
<input name='city' .. />
<input name='price' .. />
</form ..>
<form ..>
// house rent info:
<input name='city' .. />
<input name='price' .. />

//registration info:
<input name='email' .. />
<input name='pass' .. />
<input type='submit' />
</form ..>

//房屋租金信息:
//注册信息:
以及创建表单类型或smthng。 有关于如何处理提交的提示吗


p、 我使用symfony/form:^3.0

与symfony表单一起使用,所有内容都是表单类型。因此,其中一个具有根类型和子类型。每个子类型都可以有其他子类型,等等

因此,在本例中,您有两种表单类型:
SignupFormType
HouseRentFormType
。您可以将这些用作新表单的子类型:

$form = $formBuilder
    ->add('signup', SignupFormType::class)
    ->add('house_rent', HouseRentFormType::class)
    ->getForm();

我想扩展@Wouter J的答案,因为上面的方法对我不起作用

我必须在formbuilder中定义data_类:

class SignupHouseRentFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('signup', SignupFormType::class, array(
                'data_class' => Signup::class
            ))
            ->add('house_rent', HouseRentFormType::class, array(
                'data_class' => HouseRent::class
            ));
    }
}
然后在控制器中,我必须为数据绑定使用相同的名称空间:

class SignupHouseRentController extends Controller
{

    public function indexAction(Request $request)
    {
        $signup    = new Signup();
        $houseRent = new HouseRent();

        $mergedData = array(
            'signup'    => $signup,
            'houseRent' => $houseRent
        );

        $form = $this->createForm(SignupHouseRentFormType::class, $mergedData);
        $form->handleRequest($request);
    }
}

我们使用相同的解决方案,但无法验证(isValid())这两种形式,您知道诀窍吗?