我有3个实体:Make,Model和Auto。制作 - >模型是oneToMany关系,Auto-> Model是manyToOne关系。
我想要实现的是能够生成一个由Makes列表组成的表单,例如Ford,Opel ..并且最初加载一个空的模型列表。只有在列表中选择了Make(通过ajax调用实现)时,才应填充Model列表。
我的问题是我需要做的事情,模型列表最初是空的,因为表单构建器填充了任何Make中所有的模型。
我可以通过使用query_builder实现类似,并且让我们说搜索一个不存在的模型,但这不是正确的方式。
class AutoType extends AbstractType {
public function buildForm(FormBuilder $builder, array $options) {
$builder->add('make','choice', array(
'choices'=>Array('1'=>'Opel', '2'=>'Ford'),
'property_path'=>false,
'label'=>'Make'))
->add('model', 'entity', array( // this fetches all models. Also don't want a subset of models, just empty list with 'Select Model'
'class' => 'Auto\SalonBundle\Entity\Model',
'empty_value' => 'Select Model'
))
->add('km')
->add('cc')
->add('hp')
->add('kw')
);
}
}
答案 0 :(得分:0)
为了实现这一点,您必须创建自己的表单类型和相应的_widget块。或者,您可以使用捆绑包https://github.com/shtumi/ShtumiUsefulBundle的依赖过滤表单类型更快地到达那里。