php - php Zend 框架:设置需要的Zend_Form_Element表单字段,如何更改用于确保该元素不是空白的确认器

  显示原文与译文双语对照的内容
56 1

使用 Zend_Form 时,验证输入是否为空的唯一方法是执行以下操作

$element->setRequired(true);

如果未设置这里元素,而且元素是空的,则在元素上看上去没有运行验证。

如果我使用 setRequired(),那么元素会自动给出标准的NotEmpty验证器。问题是,这个验证器的错误消息很糟糕,"值为空,但需要 非空 值"。我想更改这里消息。现在我已经经通过改变 Zend_Validate_NotEmpty 类来完成这个操作,但是这是一个比较复杂的。

我希望能够使用我自己的类( 从 Zend_Validate_NotEmpty 派生) 来执行非空检查。

时间:原作者:0个回答

94 3

我这样做的方式是( 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);

希望这有帮助。

原作者:
134 1

如果不存在,则 setRequired(true) 将通知 isValid() 添加一个非空验证( ) 。由于在调用 isValid() 之前不存在这里验证,因此无法设置消息。

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

$username = new Zend_Form_Element_Text('username');
$username->setRequired(true)
 ->addValidator('NotEmpty', true, array('messages' => array('isEmpty' => 'Empty!')));
原作者:
118 1

添加NotEmpty验证程序,并添加你自己的消息:

//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')));

注意:除非在元素上同时调用了,否则NotEmpty验证程序似乎不会触发

在控制器( 或者任何地方) 中,调用 $form-> setTranslator ( $yourTranslator ) 以将错误消息本地化为页面。

原作者:
83 2

更改错误消息

原作者:
140 2

我可以以看到改变了错误消息of无法更改特定错误的消息。这里外,该手册使它看起来像属于Zend_Form的函数,但在使用Zend_Form实例时找不到方法。

使用的例子是非常有用的。

原作者:
...