ho questo codice:Yii DropDownList valore predefinito
echo $form->dropDownList($model,
'defaultPrinterId',
CHtml::listData(Printer::model()->findAll(), 'id', 'name'),
array('prompt' => '-- None--'));
che mi dà un elenco a discesa come questo:
<select id="LabelType_defaultPrinterId" name="LabelType[defaultPrinterId]">
<option value="">-- None --</option>
</select>
Tuttavia, quando i posti di forma, si aggiunge un valore al mio tavolo dove il defaultPrinterId è 0. Invece, come faccio a renderlo nulla, dal momento che è un campo nullable?
Questo funziona come un fascino, ma sembra un po 'po' goffo con me. Fondamentalmente ogni azione del controller che utilizza questo ha bisogno di avere questo codice ripetuto per trasformare una stringa vuota in null. Sembra che questo dovrebbe essere in qualche modo specificato nel modello, o preferibilmente uno dei parametri su quello strumento htmlDropDown invierebbe un suggerimento al modello che hey, considera questa stringa vuota come nulla. –
Si potrebbe anche provare il parametro 'empty' invece di' prompt' ma IIRC si comporta allo stesso modo. – adamors
Inoltre, se si desidera complicare un po 'le cose, è possibile definire regole personalizzate e/o valori predefiniti per diversi scenari (inserimento/aggiornamento/ecc.). Dai un'occhiata a [CModel :: rules()] (http://www.yiiframework.com/doc/api/1.1/CModel/#rules-detail) per maggiori informazioni. – adamors