【发布时间】:2017-03-15 09:44:05
【问题描述】:
我正在开发一个为表单实现 Doctrine ORM 的 Symfony2 CRM。 CRM 上的一种表格用于创建客户地址,具有所有标准文本字段,例如街道、城市、邮政编码等,还有国家和县的下拉列表。问题是,如果我从数据库中检索所有县,则列表很大,不仅需要很长时间才能加载,而且我的客户很难找到县,因为它适用于世界上的每个国家。
我希望他们先选择国家,然后根据所选国家自动填充县域。但是,我不确定如何在 Doctrine 中执行此操作。
这是我在表单类型中的buildForm 函数(注意这里,Zone 表示县):
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('company' , 'text', array('required' => false ));
$builder->add('firstname' , 'text', array('required' => true, 'label' => 'First name' ));
$builder->add('lastname' , 'text', array('required' => true, 'label' => 'Last name' ));
$builder->add('address1' , 'text');
$builder->add('address2' , 'text', array('required' => false ));
$builder->add('city' , 'text');
$builder->add('country' , 'entity',
array(
'class' => 'AppBundle:Oc49Country',
'property' => 'name',
'empty_value' => 'Choose an option',
));
$builder->add('zone' , 'entity',
array(
'class' => 'AppBundle:Oc49Zone',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('z')
->orderBy('z.name', 'ASC');
},
'empty_value' => '-- Please select --',
'required' => true,
'label' => 'County/State'
));
$builder->add('postcode' , 'text');
$builder->add('save', 'submit', array(
'attr' => array(
'class' => 'btn btn-primary'
),
));
}
有没有一种方法可以在查询构建器中添加一个额外的参数,以便即时过滤县列表?
【问题讨论】: