NULLは、連想配列の無効なキーです。'integers'と'strings'のみが有効な配列キーです。ドキュメントを参照してください:配列
フォームを介して空の値を送信するには、空の文字列を使用できます。データベースにNULL値を強制的に挿入するには、保存する前にモデルまたはコントローラー内でこれを処理します
$options = array('' => 'Invoice', 'card' => 'Payment card');
echo $this->Form->input('payment_method', array('options'=>$options));
次に、コントローラーの内部。
if ('' === $this->request->data['MyModelName']['payment_method']) {
this->request->data['MyModelName']['payment_method'] = null;
}
代替アプローチ
ただし、「請求書」の支払い方法に値を使用してみませんか?このような:
echo $this->Form->input('payment_method', array(
'options' => array(
'' => 'Select your payment method..',
'invoice' => 'Invoice',
'card' => 'Payment card',
)
));
IMOこれにはいくつかの利点があります。
- より透過的です。たとえば、データベースの内部を見ると、支払い方法が「請求書」であることが明らかです。「特別な」値(null)を使用することにより、アプリケーションの内部動作を知らない人は、ソースコードを参照して見つける必要があります。
- 使用者が支払い方法を選択したかどうかを確認することができます。たとえば、値が空の場合、使用者は支払い方法の選択を忘れている可能性があります。その場合、検証ルールを使用してフィールドに「無効」のマークを付けることができます。