我有一个允许为空的数字输入字段,但如果不为空,我想在输入字母时返回验证错误。
目前,如果我删除了允许空验证,对于numeric和notEmpty都可以正常工作,但是这个字段是可选的,我该如何解决这个问题?
以下是我模型的验证:
'tickets' => array(
'numeric' => array(
'rule' => 'numeric',
'message' => 'Please enter only numbers',
'allowEmpty' => true,
),
),
如果我将allowEmpty设置为false,则会再次按预期工作。通过分离规则,我一直在玩它,但到目前为止没有运气。任何帮助表示赞赏。
答案 0 :(得分:1)
您指定“允许为空”和“可选”的方式会让我认为您所追求的实际上是required,您应将其设置为false。
required => true
与验证规则notEmpty()
的含义不同。required => true
表示必须存在数组键 - 这并不意味着它必须具有值。因此,如果数据集中不存在该字段,则验证将失败,但如果提交的值为空(''),则可能(取决于规则)成功。
所以
'tickets' => array(
'numeric' => array(
'rule' => 'numeric',
'message' => 'Please enter only numbers',
'allowEmpty' => true,
'required' => false,
)
),
意味着该字段可以是“可选的”(不包括在返回的数组中),如果包含它则“允许为空”,如果不是,则规则是“数字”