我是Zend Framework的新手,我被困住了。
以下代码是我的表单装饰器设置的片段,我遇到了问题:
// prepend errors to top
$this->setDecorators(
array(
'FormElements',
'Form',
array(
'FormErrors',
array(
'placement' => Zend_Form_Decorator_Abstract::PREPEND
)
)
)
);
当在视图上呈现错误时,我得到以下内容:
<ul class="form-errors">
<li>
<b>First Name: </b>
<ul class="errors">
<li>You forgot to enter your First Name.</li>
</ul>
</li>
</ul>
如何删除所有html,包括标签<b>First Name: </b>
?
答案 0 :(得分:2)
只需创建自定义装饰器,尝试类似这样的
protected $_errorDecorator = array(
'markupElementLabelEnd' => '',
'markupElementLabelStart' => '',
'placement'=>Zend_Form_Decorator_Abstract::PREPEND
);
$this->setDecorators(array('FormElements','Form',
array('FormErrors',
$_errorDecorator)));
答案 1 :(得分:0)
我意识到我参加聚会的时间有点晚了,但由于这是谷歌的前5名结果,而且仍未得到答复,我认为我会做出贡献。
最好的方法是扩展Zend装饰器,重载renderLabel
方法,添加renderLabels
配置选项,然后检查它是否已设置。如果是这样,请不要调用呈现标签的父函数。
$form->setDecorators(
array(
'FormElements',
'Form',
array(
'FormErrors',
array(
'placement' => 'prepend',
'renderLabels' => false
)
)
)
);
class My_Form_Decorator_FormErrors extends Zend_Form_Decorator_FormErrors
{
/**
* @see Zend_Form_Decorator_FormErrors::renderLabel()
*/
public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $view)
{
if ($this->getOption('renderLabels') === false) {
return;
}
return parent::renderLabel($element, $view);
}
}