0

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

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

这是对我的模型的验证:

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

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

4

1 回答 1

1

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

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

所以

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

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

于 2014-07-05T18:19:28.537 回答