zend framework 1 Form - 如果存在验证错误,请注意元素将丢失其值

zend framework 1 Form - Note element lost its value if there is validation error

我的 zend framework 1 表单中有一个 Note 元素用于注册。它以以下格式定义:

$captcha_reload =   new Zend_Form_Element_Note('captcha_reload',  
                                array('value'=>"<div id='captcha_reload_div'>
                                                <a href='javascript:return false;' 
                            id='change-image'>Change text.</a></div>"));        
$this->addElement($captcha_reload);                      

该元素显示超链接,在注册页面调用时完美显示。

问题出在表单提交过程中。如果存在表单验证错误,此注释元素不会显示任何内容(即缺少超链接)。

我已经检查并尝试了以下代码:

$this->setDefaults(array('captcha_reload'=>"<div id='captcha_reload_div'>
                                                <a href='javascript:return false;' 
                            id='change-image'>Change text.</a></div>")); 

但是如果表单验证错误,仍然没有值。

对于 Note 元素,我在 Zend Registration Form 页面中包含了以下内容:

class Zend_Form_Element_Note extends Zend_Form_Element_Xhtml  
{  
   public $helper = 'formNote';  
}

提交表单时,它会覆盖元素的 value 属性。由于没有提交任何内容,当再次 echo 编辑表单以显示表单错误时,元素的值也为空。

或许向元素添加一个 isValid 函数?

// pseudo-code
public function isValid($value, $context = null) {
  $this->_setValue("<div id='captcha_reload_div'><a href='javascript:return false;' id='change-image'>Change text.</a></div>");
  return true;
}

这会将值重置为您的自定义文本,并且 return 为真而不进行任何检查(因为您知道该值是您想要的值)。随后,当表单再次 echos 时,它将显示 isValid

中设置的值
class Zend_Form_Element_Note extends Zend_Form_Element_Xhtml  
{  
   public $helper = 'formNote';  
   public function isValid($value, $context = null)
   {
      return true;
   }
}

我已将 isValid() 添加到注释 class 中,它工作正常。它不需要在 Note class.

中使用 _setValue()