2015-07-28 7 views
4

Почему я получаю ошибку при выборе этой формы для нескольких. Это происходит непосредственно на веб-сайте Symfonys. Все, что я изменил, было именем переменной.Ошибка выбора типа Symfony

$builder->add('genre', 'choice', array(
'choices' => array(
    'x' => 'x', 
    'y' => 'y', 
    'z' => 'z', 
), 
'multiple' => true, 

));

Это ошибка:

Unable to transform value for property path "genre": Expected an array. 

Вот мой объект класса для этой переменной:

/** 
* @var string 
* 
* @ORM\Column(name="genre", type="text", nullable=true) 
*/ 
private $genre; 
+4

С несколько вариантов будут доступны форма будет создать 'array' результатов, но ваш«жанр»свойство только' string'. Вам нужно будет либо изменить отображение для жанра на 'array', либо удалить' 'multiple '=> true'. – qooplmao

+0

Спасибо за отзыв – LargeTuna

+0

Вы получили его на работу? – qooplmao

ответ

1

Я могу подтвердить, что комментарий по qooplmao решает вопрос:

Проблема заключается в том, что поле вашего объекта $genre не рассматривается как array, а как string.

Но когда включено несколько вариантов, поле формы предоставит array в результате, а не строку.

Таким образом, вы можете:

  • карта genre как array вместо того, чтобы string
  • или отключить несколько вариантов, установив multiple ложной

I вышеописанная проблема, я думаю, что вы хотите на карте genre как array.

-2

Попробуйте этот код:

$builder->add('genre', 'choice', array(
    'choices' => array(
     'x' => 'x', 
     'y' => 'y', 
     'z' => 'z' 
    ), 
    'multiple' => true 
)); 

может быть, вы забыли удалить запятую после знака 'г' => 'г' и 'кратному' => правда.

Удалить запятой подписать и попробовать этот способ

Смежные вопросы