gpt4 book ai didi

CakePHP 如何提交NULL 值?

转载 作者:行者123 更新时间:2023-12-01 01:10:34 25 4
gpt4 key购买 nike

在网络表单上,我有选择选项字段。它必须提交值“card”(不带引号)或 NULL 值。

现在,代码如下所示:

    $options = array(NULL => 'Invoice', 'card' => 'Payment card');
echo $this->Form->input('payment_method', array('options'=>$options));

如果选择了 Invoice 选项,我如何定义选项数组,以在数据库表(和/或“卡片”,但当然有效)中提交 NULL 值?

先感谢您!

最佳答案

NULL 是关联数组的无效键。只有“整数”和“字符串”是有效的数组键,请参阅文档:Arrays

要通过表单发送空值,您可以使用空字符串。要强制在数据库中插入 NULL 值,请在保存之前在模型或 Controller 中处理

$options = array('' => 'Invoice', 'card' => 'Payment card');
echo $this->Form->input('payment_method', array('options'=>$options));

然后在你的 Controller 里面;
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 这有一些优点;
  • 它更透明,例如查看数据库内部时,很明显付款方式是“发票”。通过使用“特殊”值(空值),不了解您的应用程序内部工作原理的人将不得不浏览源代码以找出
  • 可以检查用户是否选择了付款方式;例如如果该值为空,则用户可能忘记选择付款方式,在这种情况下,您可以通过验证规则将该字段标记为“无效”。
  • 关于CakePHP 如何提交NULL 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645202/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com