Zend表单中的自定义错误消息未显示

时间:2013-12-04 08:52:10

标签: php zend-framework frameworks

我写了一些代码,用于向zend框架元素添加自定义错误消息,但事情是错误没有显示出来。我有相关代码的以下部分:(我可以在其他地方添加errormessage)。

        if($this->_request->isPost() && $form->isValid($this->_request->getPost())){
            $afgehandeldValue = $form->getValue('afgehandeld');
            if($afgehandeldValue == 0)
            {
                $conversationValues['conversation_handled'] = 0;
            }
            else
            {
                $checkFollowUp = $form->getValue('opvolging');
                if($checkFollowUp == 0)
                {
                    $conversationValues['conversation_handled'] = 1;
                }
                else
                {
                    $form->getElement('opvolging')
                    ->addError('Je mag niemand opgeven voor een opvolgend gesprek als afgehandeld is aangevinkt.')
                    ->markAsError();
                }
            }

3 个答案:

答案 0 :(得分:0)

这应该有效(markAsError()不需要addError()自动将此元素标记为无效)。也许你的条件不正确?在设置错误之前尝试 echo ,以查看这部分代码是否实际运行。

答案 1 :(得分:0)

假设您使用的是zf1 您可以在zend表单中添加自定义错误消息,无需在控制器中执行此操作。

 $this->addElement('text', 'text', array(         
        'required'   => true,
        'validators' => array(              
            array('NotEmpty',true,'options' => array('messages' => 'please enter some text')),
        ),
        'label'      => 'Text Element:',
        'placeholder'=>"Insert Text",                                     
    ));

答案 2 :(得分:0)

如果您正在使用Zend framework 1.X并希望该特定表单元素显示错误,您可以在Element这样的表单中执行此操作。

 $opvolging  = new Zend_Form_Element_Text('opvolging',
                            array('placeholder' => 'opvolging')
                     );               


$opvolging          ->setLabel('opvolging : ')
                  ->setRequired(true)
                     ->addFilter('StripTags')
                 ->setAttrib('accept-charset', 'utf-8')
                 ->addFilter('StringTrim')
                 ->addValidator('NotEmpty')
                     ->getValidator('NotEmpty')->setMessage('Je mag niemand opgeven voor een opvolgend gesprek als afgehandeld is aangevinkt.');

并在你的动作控制器中

 $opvolging =   $form->getValue('opvolging');