我想做一个表格,其中包含两个彼此无关的区别对象。
有可能吗? 当用户点击Javascript提交按钮时,我是否必须在同一页面上执行2个表单并使用javascript将它们汇总在一起?或者可以使用Symfony的一个表单来管理它。如果是,有关如何进行的任何提示吗?
答案 0 :(得分:2)
我不确定这个解决方案是否是最佳解决方案,但它正在我的某个项目中工作,我遇到了类似的问题。
您需要为每个实体创建FormType,并在data_class
方法中正确定义setDefaultOptions
。在我们的示例中,这些是EventType和UserType。
为此,您需要创建表示两个实体的类。我打电话给Form Models。
// Acme\DemoBundle\Form\Model\Custom.php
class Custom
{
public $event;
public $user;
}
现在只需创建最后一个FormType,将这些实体粘合在一起。
// Acme\DemoBundle\Form\CustomType.php
class CustomType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('Event', new EventType());
$builder->add('User', new UserType());
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\DemoBundle\Form\Model\Custom'
));
}
...
}