【问题标题】:change error_message in Zend_Validate_EmailAddress更改 Zend_Validate_EmailAddress 中的 error_message
【发布时间】:2010-06-04 10:42:36
【问题描述】:

我需要更改 Zend_Element_Text 中消息上的所有标准错误消息 当我使用验证器('EmailAddress')时,这个验证器会抛出几个不同的消息。

  • 值为必填项,不能为空
  • '' 不是有效的电子邮件地址 基本格式 local-part@hostname

当我设置选项时 setErrorMessage('some my error text') 它字符串多次显示任何错误。

错误看起来像

  • 一些我的错误文本
  • 一些我的错误文本

解决此问题的最佳方法是什么?zf 版本 1.10.3

【问题讨论】:

  • 我试着清理你的问题,但对于我的生活,我无法弄清楚你所说的 ' 是什么意思......这个验证器会抛出不同的消息和标准选项 setErrorMessage 写的一样多这个元素(1,2,3 相同的消息)'
  • 我以前看到过,但不清楚在哪里可以看到现有的静态变量,例如 Zend_Validate_GreaterThan::NOT_GREATER ?

标签: php zend-framework validation


【解决方案1】:

以下内容应涵盖 Zend_Validate_EmailAddress 的所有错误消息

$emailValidator = new Zend_Validate_EmailAddress();
$emailValidator->setMessages(
    array(
        Zend_Validate_EmailAddress::INVALID => 'Please enter in a valid email address in the format user@domain.co.uk',
        Zend_Validate_EmailAddress::INVALID_FORMAT => 'Error with format',
        Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Error with hostname',
        Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'Error with Local Part',
        Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Error with MX record',
        Zend_Validate_EmailAddress::INVALID_SEGMENT => 'Error with Segment'
    )
);

尝试使用它并查看是否显示这些错误消息。希望您可以自定义这些并显示正确的验证消息。

【讨论】:

【解决方案2】:

@Alistair,不要在这里采纳你的建议。

// Email
  $email = new Zend_Form_Element_Text('email');

  $notempty = new Zend_Validate_NotEmpty();
  $email_validate = new Zend_Validate_EmailAddress();
  $email_validate->setMessages(
      array(
          Zend_Validate_EmailAddress::INVALID => 'Please enter in a valid email address in the format user@domain.co.uk',
          Zend_Validate_EmailAddress::INVALID_FORMAT => 'Error with format',
          Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Error with hostname',
          Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'Error with Local Part',
          Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Error with MX record',
          Zend_Validate_EmailAddress::INVALID_SEGMENT => 'Error with Segment'
      )
  );

  $email->addValidator($notempty , true, $email_validate)
        ->setRequired(false);
  // Submit
  $submit = new Zend_Form_Element_Submit('submit');

【讨论】:

  • 如果您添加多个验证器,则必须使用 $email->addValidators(array(objects implements "Zend_Validate_Interface")) 或者如果您使用 addValidator,则必须添加一个验证器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
相关资源
最近更新 更多