2016-01-31 3 views
0

Ситуация: Я получил следующий код в одном из моих форм:Как обрабатывать множественный выбор в поле выбора - Symfony 2

 $builder->add('Type', 'choice', array 
     (
      'label' => 'Enter body types', 
      'choices' => array('Sedan'=>'Sedan','Wagon'=>'Wagon',...), 
      'multiple' => true, 
     )) 

Проблема: Когда пользователь выбирает несколько значений (например, как Sedan, так и Wagon) исключение «Array to string conversion» выбрано по понятным причинам.

Вопрос: Есть ли способ добавить опцию формы с функцией, которая могла бы обрабатывать массив для преобразования строк? Я имею в виду что-то подобное этому:

 'someOption' => function ($selectedArray) 
     { 
      $returnString = ""; 
      for ($selectedArray as $singleValue){ $returnString = $returnString . ",". $singleValue } 
      return $returnString; 
     } 
+0

Как ваша организация разработана? i означает объект, в который включен тип свойства $. –

ответ

3

Проблема здесь состоит в том, что ваше поле Type является одной строкой, и в вашей форме вы позволяете несколько значений.

Когда форма обрабатывает поле с множественным выбором, вы работаете не с простым значением, а с массивом значений. Когда вы установите этот массив в поле объекта и попытаетесь сохранить этот объект в своей базе данных, и поскольку ваше поле сконструировано как простая строка, php попытается получить строчную версию значения ... например: (строка) массив(), и это то, что не выполнимо в PHP :)

вы можете определить значение как Array или вы должны отключить эту Групповое :)

Примечание:

Ваша форма должна обрабатываться массивами, если вам нужно выбрать несколько значений . Ваша организация должна обрабатывать это с помощью сопоставления массива (как указано в I ).

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