У меня довольно простая форма с некоторыми полями из модели доктрины.
$this->widgetSchema['fields'] = new sfWidgetFormDoctrineChoice(array(
'model' => 'FieldModel',
'expanded' => true,
'multiple' => true,));
$this->validatorSchema['fields'] = new sfValidatorDoctrineChoice(array(
'model' => 'FieldModel',
'multiple' => true,));
Поля отображаются в форме как флажки, и я могу проверить и сохранить правильно. Это поле 'fields' преобразуется в json-структуру и сохраняется в базе данных в виде текста. Пока все хорошо.
ПРИМЕЧАНИЕ. Поле 'fields' хранится в базе данных как TEXT, но пользователь должен иметь возможность выбирать значения из списка флажков.
Проблема возникает, когда я хочу установить флажки по умолчанию.
Я пытался сделать:
$this->setDefault('fields', array('key1','key2','key3'));
Где 'keyX' соответствует фактическому значению первичного ключа (строки) для поля в базе данных.
Если я сделаю
$this->getDefault('fields');
Я получаю именно то, что положил ранее.
Однако symfony не выводит ни один из флажков, как отмечено. Я даже пытался удалить оба варианта: «расширенный» и «множественный» для виджета выбора, поэтому я получаю простое окно SELECT и предоставляю только одно значение по умолчанию.
Настройка значений по умолчанию для других виджетов (ввод текста, выбор и т. Д.) Работает.
Btw; Полевая модель i18n. Не знаю, имеет ли это здесь значение, так как хранение и извлечение работает, как и ожидалось.
Также; форма отображается как часть другой формы с помощью include_partial (). Может ли это что-нибудь саботировать? В классе родительской формы:
$this->embedRelation('TheRelationThatBugsMe');
А затем в _form.php для 'parent':
include_partial('the_relation_that_bugs_me/form', array('form' => $form['TheRelationThatBugsMe']));
Кто-нибудь знает, где я мог ошибиться, или, по крайней мере, может дать мне несколько советов относительно того, где я должен начать копать?
[UPDATE]
Если я создаю новое поле в форме 'fields2' (которое не существует как поле в базе данных) и использую точно такой же код для создания виджета, валидатора и установки значений по умолчанию, тогда значения по умолчанию отображаются правильно. Почему это не работает установка значений по умолчанию для поля, сопоставленного столбцу в базе данных?