Выбор формы Symfony2 расширен выбор по умолчанию

Я делаю форму фильтра в symfony2 и пытаюсь предварительно выбрать некоторые поля.

У меня есть два варианта:

$formBuilder->add('first', 'choice',
    array('choices' => $choiceFirst,
    'expanded' => false,
     'multiple' => true,
     'data' => explode(' ', $this->getRequest()->get('first'))
));
$formBuilder->add('second', 'choice',
    array('choices' => $choiceSecond,
    'expanded' => true,
    'multiple' => true,
    'data' => explode(' ', $this->getRequest()->get('second'))));

Для первого выбора, который не расширен, данные, передаваемые по URL-адресу, предварительно выбираются. Но не для второго, который расширен.

Есть ли способы предварительно выбрать флажки из выбора поля?


person user1014102    schedule 30.03.2012    source источник


Ответы (3)


Вы должны предоставить массив выбранных значений в качестве данных для поля множественного выбора.

редактировать: неуместный ответ, моя ошибка

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

Я думаю, вам нужно только поместить проверенное значение в свой массив, так что те, которые верны;)

person AlterPHP    schedule 30.03.2012
comment
Это то, что я делаю. Я даю и массив, и данные кажутся хорошими, потому что, если я устанавливаю expand: false, данные выбираются в списке. Моя проблема в том, что когда поле расширяется, данные не выбираются - person user1014102; 30.03.2012
comment
Извините, я перепутал между расширенным и множественным. Я удаляю свой ответ, который не имеет значения... - person AlterPHP; 30.03.2012
comment
Нет, потому что полученное значение представляет собой строку, а мои значения флажка - int. Итак, мои предыдущие данные выглядят так: массив (707 => '707) А теперь: массив (707 => 707) - person user1014102; 30.03.2012

Лучшее решение, которое я нашел для этой проблемы, - просто установить значение по умолчанию для вашего объекта перед созданием формы.

Нравится: $myEntity->setMyfieldchoice(1);

Таким образом, symfony поймет, что это значение является значением по умолчанию (сработало для меня в поле выбора).

Надеюсь, это поможет!

person Snroki    schedule 30.03.2012

Пытаться:

$formBuilder->add('first', 'choice',
   array('choices' => array('0' => 'first option', '1' => 'second option'),
   'expanded' => false,
   'multiple' => true,
   'data' => explode(' ', $this->getRequest()->get('first'))
));

И просмотр:

{{ form_widget(form.first.0) }}
{{ form_widget(form.first.1) }}

Для меня работает.

person dziorkowsky    schedule 30.04.2012