代码之家  ›  专栏  ›  技术社区  ›  Robin Barnes

Zend Framework:将Zend_Form_元素表单字段设置为必填字段,如何更改用于确保元素不为空的验证器

  •  4
  • Robin Barnes  · 技术社区  · 18 年前

    Zend_Form ,验证输入是否为空的唯一方法是

    $element->setRequired(true);
    

    如果未设置此选项,并且元素为空,则我认为验证未在元素上运行。

    setRequired() Zend_Validate_NotEmpty

    理想情况下,我希望能够使用自己的类(从 Zend_Validate_NotEmpty )执行非空检查。

    5 回复  |  直到 7 年前
        1
  •  4
  •   WalterJ89    18 年前

    我是这样做的(ZF 1.5):

    $name = new Zend_Form_Element_Text('name');
    $name->setLabel('Full Name: ')
         ->setRequired(true)
         ->addFilter('StripTags')
         ->addFilter('StringTrim')
         ->addValidator($MyNotEmpty);
    

    因此,addValidator()是有趣的部分。消息设置在“Errormessage文件”中(将所有自定义消息捆绑在一个文件中):

    $MyNotEmpty = new Zend_Validate_NotEmpty();
    $MyNotEmpty->setMessage($trans->translate('err.IS_EMPTY'),Zend_Validate_NotEmpty::IS_EMPTY);
    

        2
  •  3
  •   Toxygene    18 年前

    如果一个还不存在 . 由于此验证在调用isValid()之前不存在,因此无法设置消息。

    最简单的解决方案是在调用isValid()之前手动添加一个非空验证,并相应地设置它的消息。

    $username = new Zend_Form_Element_Text('username');
    $username->setRequired(true)
             ->addValidator('NotEmpty', true, array('messages' => array('isEmpty' => 'Empty!')));
    
        3
  •  2
  •   duma    17 年前

    添加NoteEmpty验证程序,并添加您自己的消息:

    // In the form class:
    $username = $this->createElement('text', 'username');
    $username->setRequired();  // Note that this seems to be required!
    $username->addValidator('NotEmpty', true, array(
        'messages' => array(
            'isEmpty' => 'my localized err msg')));
    

    除非还对元素调用了setRequired(),否则不会触发NoteEmpty验证器。

    在控制器中(或任何位置),调用$form->setTranslator($yourTranslator)将错误消息打印到页面时本地化。

        4
  •  1
  •   mk.    18 年前
        5
  •  0
  •   Robin Barnes    18 年前

    Changing the error message 无法更改特定错误的消息。另外,手册使它看起来像是一个属于Zend_表单的函数,但我在Zend_表单的实例上使用它时找不到方法。

    使用的例子将非常好。

    推荐文章