У меня есть этот код:Yii DROPDOWNLIST
echo $form->dropDownList($model,
'defaultPrinterId',
CHtml::listData(Printer::model()->findAll(), 'id', 'name'),
array('prompt' => '-- None--'));
Который дает мне выпадающий список, как это:
<select id="LabelType_defaultPrinterId" name="LabelType[defaultPrinterId]">
<option value="">-- None --</option>
</select>
Однако, когда посты формы, добавляет значение к моему столику где defaultPrinterId равен 0. Вместо этого, как бы я сделал его null, так как это поле с нулевым значением?
Это работает как шарм, однако, кажется, немного неуклюжим для меня. В основном каждое действие контроллера, которое использует это, должно иметь этот повторяющийся код, чтобы преобразовать пустую строку в нуль. Похоже, что это должно быть как-то указано в модели, или, желательно, один из параметров этого инструмента htmlDropDown отправил бы подсказку модели, которая, эй, обрабатывает эту пустую строку как нуль. –
Вы также можете попробовать параметр 'empty' вместо' prompt', но IIRC он ведет себя аналогичным образом. – adamors
Кроме того, если вы хотите немного усложнить ситуацию, вы можете определить пользовательские правила и/или значения по умолчанию для разных сценариев (insert/update/etc). Взгляните на [CModel :: rules()] (http://www.yiiframework.com/doc/api/1.1/CModel/#rules-detail) для получения дополнительной информации. – adamors