【问题标题】:Zend_Filter_Input and empty valuesZend_Filter_Input 和空值
【发布时间】:2009-07-15 09:32:38
【问题描述】:

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

在 Zend Framework 1.8.0 中,我使用以下数组作为 Zend_Filter_Input 的“验证器”参数:

$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 验证器,如果该字段为空。

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

【问题讨论】:

  • 你真的在混合过滤和验证吗?他们有完全不同的目的......
  • 而您使用 Zend_Filter_Input::MESSAGES 未验证消息 - 这可能是问题所在。

标签: php zend-framework validation


【解决方案1】:

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

【讨论】:

  • 您收到的是缺少字段的默认消息还是 NotEmpty-Validator 的默认消息?
  • 我在对该主题进行了一些研究后更改了答案。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    试试这个:

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

    我不知道为什么,但似乎他们用“NotEmpty”更改了常量“isEmpty”(没有将它包含在 Zend_Validate_NotEmpty 类中)。 有时我只是对 Zend 发疯。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多