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

Cakephp 2.5 Numeric field (int in db) and allow Empty not working

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

目前,如果我删除允许空验证工作只适用于numeric和notEmpty但这个字段是可选的我该怎么解决这个问题?

这是我模型的验证:

1
2
3
4
5
6
7
'tickets' => array(
    'numeric' => array(
        'rule' => 'numeric',
        'message' => 'Please enter only numbers',
        'allowEmpty' => true,
    ),
),

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


您指定"允许为空"和"可选"的方式使我认为您实际需要的是什么,您应该将其设置为false。

required => true does not mean the same as the validation rule notEmpty(). required => true indicates that the array key must be present - it does not mean it must have a value. Therefore validation will fail if the field is not present in the dataset, but may (depending on the rule) succeed if the value submitted is empty (‘’).

所以

1
2
3
4
5
6
7
8
'tickets' => array(
    'numeric' => array(
        'rule' => 'numeric',
        'message' => 'Please enter only numbers',
        'allowEmpty' => true,
        'required' => false,
    )
),

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