symfony2,表单构建器,如何最初显示空实体选择列表

时间:2012-07-04 11:16:30

标签: symfony twig

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

1 个答案:

答案 0 :(得分:0)

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