Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework:将Zend_Form_元素表单字段设置为必填字段,如何更改用于确保元素不为空的验证器_Php_Zend Framework_Validation - Fatal编程技术网

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