实体\ Profile.php
class Profile
{
...
/**
* @var string
*
* @ORM\Column(name="country", type="string", length=100, nullable=true)
*/
private $country;
/**
* @var string
*
* @ORM\Column(name="province", type="string", length=100, nullable=true)
*/
private $province;
...
}
MyProfileTypeForm.php:
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
->add('country', CountryType::class, array(
'label' => 'form.profile.country',
'preferred_choices' => array(
'US'
)
))
...
$builder->addEventListener(FormEvents::POST_SET_DATA, function(FormEvent $event) {
$form = $event->getForm();
$country = $form->get('country')->getData();
$form->add('province', EntityType::class, array(
'class' => 'UserBundle:LocationProvince',
'choice_label' => 'name',
'choice_value' => 'id',
'query_builder' => function (EntityRepository $er) use ($country) {
return $er
->createQueryBuilder('l')
->where('l.countryCode = :cc')
->setParameter(':cc', $country);
},
'label' => 'form.profile.province',
));
});
}
错误代码:
执行' UPDATE配置文件SET省=?时发生异常? WHERE id =?'与params [{},1]:
捕获致命错误:类Panel \ UserBundle \ Entity \ LocationProvince的对象无法转换为字符串
说明
获取国家/地区代码的实体。省名单由国家代码绘制。但它没有记录。
答案 0 :(得分:0)
在您指定的省选择下拉列表中:
'choice_value' => 'id',
但我相信" id"是一个整数。 您可能需要将其更改为:
'choice_value' => 'province',
尝试一下 - 我认为它应该有用。