【问题标题】:How can I override all error messages for a form element?如何覆盖表单元素的所有错误消息?
【发布时间】:2012-12-31 20:14:05
【问题描述】:

我可以使用下面的方法来覆盖一个zend表单元素的所有错误信息。

$name->setRequired( TRUE )
    ->setAttrib( 'id', 'fullname' )
    ->addErrorMessage( 'Please provide your name' );

但是,当我使用工厂模式创建表单元素时,我无法复制这一点。
'errorMessage' 键什么也不做。

$this->addElement('text', 'city', array(
        'placeholder'   => 'City*',
        'required'      => true,
        'filters'       => array('StringTrim', 'StripTags'),
        'errorMessage'  => 'TEST',
        'validators'    => array(
            array('StringLength', false,
                array(3, 50, 
                    /*'messages' => array(
                        Zend_Validate_StringLength::TOO_SHORT => 'too short'
                    )*/
               )
            )
        ),
        'decorators'    => array('ViewHelper','Errors'),
    ));

我可以单独覆盖每个 Zend 错误消息(参见注释掉的代码),但这是一个非常乏味的过程。

在使用工厂模式创建 ZF 表单元素时,有没有办法覆盖所有错误消息?

【问题讨论】:

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


    【解决方案1】:

    我没试过,但我认为你可以做到:

    'errorMessages'  => array('TEST'),
    

    请注意,errorMessages 是复数形式,您传递的是单元素数组而不是字符串。

    【讨论】:

      【解决方案2】:

      无法覆盖所有错误消息

      【讨论】:

        【解决方案3】:

        如果您想更改错误消息,那么您在验证器定义时定义类似..

        'validators' => array(
                            'NotEmpty', 
                            true, 
                            array( 'messages' => array( 'isEmpty' => "Please provide your name.") )
        

        当此字段为空时,错误消息将是“请提供您的姓名。”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          • 2012-10-18
          • 2010-12-01
          • 2011-04-28
          • 1970-01-01
          • 2019-07-18
          相关资源
          最近更新 更多