symfony: логические столбцы не отображают виджеты с флажками - PullRequest
1 голос
/ 05 мая 2010

Использование Doctrine в symfony 1.4 У меня определено несколько логических столбцов (хранится в виде tinyint в mySQL). Виджеты-флажки всегда отображаются как проверенные, даже если возвращаемое значение равно «0». Это похоже на этот билет .

Это общая проблема? Есть ли обходной путь?

Я могу заставить его работать, изменив строку 70 в sfWidgetFormInputCheckbox на:

if (null !== $value && $value !== false && $value !== 0)

но я бы предпочел не изменять основные файлы Symfony.

Ответы [ 3 ]

2 голосов
/ 08 мая 2011

Еще один способ устранения этой ошибки без изменения классов Symfony - установить значение по умолчанию для поля в базе данных равным 0 (не проверено):

chk_field: { type: boolean, default: 0 }

И установите виджет в классе Form.class следующим образом:

$this->setDefault('chk_field', $this->getOption('default'));

Это должно отобразить поле 'chk_field' как 'непроверенный' в вашей форме

1 голос
/ 12 августа 2010

нерешенная ошибка Symfony, см. http://www.devexp.eu/2009/04/23/sfwidgetforminputcheckbox-unchecked-bug/

Ваша база данных возвращает 0 для непроверенного поля, но Symfony отображает его как отмеченный.

Вы можете исправить это, отредактировав symfony / lib / widget / sfwidgetforminputcheckbox.class, строка 70 (в версии 1.4.6), изменив:

if (null !== $value && $value !== false)

в

if (null !== $value && $value !== false && $value != 0)

0 голосов
/ 06 мая 2010

Не уверен, в каком контексте вы видите проблему. Я могу заставить следующее работать нормально:

$database_field = '1;0;1;0;1;0;1';
$checked = explode(';', $database_field);
$this->form->getWidget('a_set_of_checkboxes')->setDefault($checked);

... флажки с 1 отмечены, 0 - нет.

Я использую виджеты «sfWidgetFormChoice» с атрибутами «множественное число: истина» и «расширенный: истина», поэтому они не являются отдельными виджетами флажков, а представляют собой один виджет, содержащий массив флажков / значений.

...