Symfony形式eventlistener字符串错误

时间:2016-06-09 10:34:25

标签: symfony-forms symfony symfony-3.1

实体\ 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的对象无法转换为字符串

说明

获取国家/地区代码的实体。省名单由国家代码绘制。但它没有记录。

1 个答案:

答案 0 :(得分:0)

在您指定的省选择下拉列表中:

'choice_value' => 'id',

但我相信" id"是一个整数。 您可能需要将其更改为:

'choice_value' => 'province',

尝试一下 - 我认为它应该有用。