Php Zend Framework:将Zend_Form_元素表单字段设置为必填字段,如何更改用于确保元素不为空的验证器
当使用Php Zend Framework:将Zend_Form_元素表单字段设置为必填字段,如何更改用于确保元素不为空的验证器,php,zend-framework,validation,Php,Zend Framework,Validation,当使用Zend_表单时,验证输入是否为空的唯一方法是 $element->setRequired(true); 如果未设置此选项,并且元素为空,则我认为验证未在元素上运行 如果我使用了setRequired(),元素将自动获得标准NotEmpty验证器。问题是这个验证器的错误消息很糟糕,“值为空,但需要非空值”。我想更改此消息。目前,我已经通过更改Zend\u Validate\u NotEmpty类来实现这一点,但这有点不太成熟 理想情况下,我希望能够使用自己的类(派生自Zend\u
Zend_表单
时,验证输入是否为空的唯一方法是
$element->setRequired(true);
如果未设置此选项,并且元素为空,则我认为验证未在元素上运行
如果我使用了setRequired()
,元素将自动获得标准NotEmpty验证器。问题是这个验证器的错误消息很糟糕,“值为空,但需要非空值”。我想更改此消息。目前,我已经通过更改Zend\u Validate\u NotEmpty
类来实现这一点,但这有点不太成熟
理想情况下,我希望能够使用自己的类(派生自Zend\u Validate\u NotEmpty
)执行非空检查。更改。据我所知,无法更改特定错误的消息。另外,手册使它看起来像是一个属于Zend_表单的函数,但我在Zend_表单的实例上使用它时找不到方法
使用示例将非常棒。我是这样做的(ZF 1.5):
因此,addValidator()是有趣的部分。消息设置在“Errormessage文件”中(将所有自定义消息捆绑在一个文件中):
希望这有帮助…默认情况下,setRequired(true)告诉isValid()添加一个非空验证(如果还不存在)。由于此验证在调用isValid()之前不存在,因此无法设置消息
最简单的解决方案是在调用isValid()之前手动添加一个非空验证,并相应地设置它的消息
$username = new Zend_Form_Element_Text('username');
$username->setRequired(true)
->addValidator('NotEmpty', true, array('messages' => array('isEmpty' => 'Empty!')));
添加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),以在错误消息打印到页面时对其进行本地化
$username = new Zend_Form_Element_Text('username');
$username->setRequired(true)
->addValidator('NotEmpty', true, array('messages' => array('isEmpty' => 'Empty!')));
// 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')));