Php 如何合并和处理2个symfony表单?
我有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
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())这两种形式,您知道诀窍吗?