5

私はこのコードを持っています:

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許容フィールドであるため、どのようにnullにするのでしょうか。

4

2 に答える 2

8

MVCに厳密に従う場合は、モデルに関連する値の検証をモデルで行う必要があります。

これは、次のような方法で実行できます。

/**
 * @return array validation rules for model attributes.
 */
public function rules() {
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        //rules rules rules...
        array('defaultPrinterId', 'default', 'setOnEmpty' => true, 'value' => NULL),
        //rest of the rules
    );
}
于 2012-06-05T16:54:59.020 に答える
6

コントローラで、属性をロードした後$_POST

$model->defaultPrinterId = $model->defaultPrinterId ? $model->defaultPrinterId : null;

これはに変更0され、nullそれ以外の場合は変更されません。

于 2012-06-05T14:51:50.110 に答える