Zend_Filter_Input和空值

时间:2009-07-15 09:32:39

标签: php zend-framework validation

如果用户未输入值,我正在使用Zend_Filter_Input来验证表单数据并希望自定义错误消息。重要的是每个字段都会收到不同的错误消息。

使用Zend Framework 1.8.0,我使用以下数组作为Zend_Filter_Input的“validator”参数:

$validators = array(
    'salutation' => array(
        new Zend_Validate_NotEmpty(),
        Zend_Filter_Input::MESSAGES => array(
            Zend_Validate_NotEmpty::IS_EMPTY => "Please enter a salutation"
        )
    ),
    /* ... */
);

由于我已升级到ZF 1.8.4,因此我总是得到空字段的默认消息(“您必须为字段'%field%'提供非空值”)。显然Zend_Filter_Input如果字段为空,则不再调用Zend_Validate_NotEmpty验证程序。

有没有办法改变这种行为或其他方式为每个字段获取自定义的“空”消息?

3 个答案:

答案 0 :(得分:1)

似乎Zend_Filter_Input在处理空字段时改变了它的行为。空字段永远不会被规则验证程序处理。如果字段为空且allowEmpty设置为true,则不使用任何验证器。如果该字段为空且allowEmpty设置为false,则设置空值的默认消息。目前无法为特定字段自定义此消息。

答案 1 :(得分:1)

行为没有改变。这是一个错误(http://framework.zend.com/issues/browse/ZF-7394

答案 2 :(得分:0)

试试这个:

    $validators = array(
        'salutation' => array('NotEmpty', Zend_Filter_Input::MESSAGES => 'Please enter a salutation')
        );

我不知道为什么,但似乎他们用“NotEmpty”改变了常量“isEmpty”(不包括在Zend_Validate_NotEmpty类中)。 有时我只是坚持Zend。 :)