2016-06-09 4 views
0

Entity \ profile.phpSymfony формы EventListener строки ошибка

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]:

Catchable Фатальная ошибка: Объект класса Panel \ UserBundle \ Entity \ LocationProvince не может быть преобразован в строку

Описание:

субъекта получения кода страны , Провинциальный список, составленный кодом страны. Но он не записывается.

ответ

0

в выборе провинции в раскрывающемся списке уже вы указали:

'choice_value' => 'id', 

Но я считаю, «идентификатор» представляет собой целое число. Вы, вероятно, нужно изменить это:

'choice_value' => 'province', 

Попробуйте что - я думаю, он должен работать.