我有 3 个实体:品牌、型号和汽车。Make -> Model 是 oneToMany 关系, Auto->Model 是 manyToOne 关系。
我想要实现的是能够生成一个包含品牌列表的表单,例如福特、欧宝……并最初加载一个空的模型列表。只有在列表中选择了 Make 时,才应填充模型列表,这是通过 ajax 调用实现的。
我的问题是我需要做什么,模型列表最初是空的,因为表单构建器正在填充在任何 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')
);
}
}