NULL 是关联数组的无效键。只有“整数”和“字符串”是有效的数组键,请参阅文档:数组
要通过表单发送空值,您可以使用空字符串。要强制在数据库中插入 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),不了解您的应用程序内部工作原理的人将不得不浏览源代码以找出
- 可以检查用户是否选择了付款方式;例如,如果值为空,则用户可能忘记选择支付方式,在这种情况下,您可以通过验证规则将该字段标记为“无效”。