Cakephp 2.5数字字段(db中的int)并允许Empty不工作

时间:2014-07-04 07:30:13

标签: php validation cakephp cakephp-2.5

我有一个允许为空的数字输入字段,但如果不为空,我想在输入字母时返回验证错误。

目前,如果我删除了允许空验证,对于numeric和notEmpty都可以正常工作,但是这个字段是可选的,我该如何解决这个问题?

以下是我模型的验证:

'tickets' => array(
    'numeric' => array(
        'rule' => 'numeric',
        'message' => 'Please enter only numbers',
        'allowEmpty' => true,
    ),
),

如果我将allowEmpty设置为false,则会再次按预期工作。通过分离规则,我一直在玩它,但到目前为止没有运气。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您指定“允许为空”和“可选”的方式会让我认为您所追求的实际上是required,您应将其设置为false。

  

required => true与验证规则notEmpty()的含义不同。 required => true表示必须存在数组键 - 这并不意味着它必须具有值。因此,如果数据集中不存在该字段,则验证将失败,但如果提交的值为空(''),则可能(取决于规则)成功。

所以

'tickets' => array(
    'numeric' => array(
        'rule' => 'numeric',
        'message' => 'Please enter only numbers',
        'allowEmpty' => true,
        'required' => false,
    )
),

意味着该字段可以是“可选的”(不包括在返回的数组中),如果包含它则“允许为空”,如果不是,则规则是“数字”