2

我有 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')
          );
    }
}
4

1 回答 1

0

为了实现这一点,您必须创建自己的表单类型和相应的 _widget 块。或者,您可以使用捆绑包的 Dependent Filtered Form Type 更快地到达那里https://github.com/shtumi/ShtumiUsefulBundle

于 2012-07-12T17:44:51.163 回答