0

エンティティ\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 = ?' パラメータ付き [{}, 1]:

Catchable Fatal Error: クラス Panel\UserBundle\Entity\LocationProvince のオブジェクトを文字列に変換できませんでした

説明:

国コードを取得するエンティティ。国コードによって描かれた地方のリスト。しかし、それは記録されません。

4

1 に答える 1

0

指定した州の選択ドロップダウンリストで:

'choice_value' => 'id',

しかし、「id」は整数だと思います。おそらくこれを次のように変更する必要があります。

'choice_value' => 'province',

試してみてください-うまくいくはずです。

于 2016-06-09T15:36:12.700 に答える