如何使用自定义错误消息为zend表单元素编写自定义验证器?

时间:2010-04-13 14:17:19

标签: php zend-framework zend-form zend-form-element zend-validate

我有一个带有允许字符列表的问题字段:A-Z,0-9,冒号(:),问号(?),逗号(,),连字符( - ),撇号(')。 我的正则表达式很好,时尚:

 $question->addValidator('regex', true, array(<regular expresstion>))

默认错误消息类似于'''与模式''

不匹配

我想写一条自定义错误消息,上面写着“此字段中不允许”

使用我缺少的现有zend组件有一种简单的方法吗?

编写自定义验证器是实现我想要实现的目标的唯一途径吗? 如果是,我如何编写自定义验证器(我查看了文档并且不太了解如何自定义错误消息) 如果还有其他方式,我也非常欣赏这一点。

感谢您抽出宝贵时间来回答这个问题!

1 个答案:

答案 0 :(得分:2)

是的,自定义验证器符合您的需求。关于如何编写,请参阅此manual

关于代码片段,这里是一个用于验证雇主ID的简单验证器(部分)

protected $_messageTemplates = array(
    self::UNIQUE => 'The id provided is already in use',
    );

public function isValid($value, $context = null)
{
    $this->_setValue($value);

    $personnel = new Personnel();
    $isValid = true;

    if( $personnel->isExistingIdEmployee($value) && ($value != $this->_id) ) {
        $this->_error(self::UNIQUE);
        $isValid = false;
    }

    return $isValid;
}