当使用Zend_Form时,如果元素无效,则表单通过无序列表返回错误。我如何改变这个使用段落标签呢?如何更改Zend_View_Helpers_FormErrors使用的标签?
我试图为元素加载错误装饰器,并调用setOptions()来传递一堆标签来替换Zend_Form_Decorator_FormErrors使用的ul/li东西,但这并没有工作= /相反Zend_Form_Decorator_Errors只是把选项作为ul标签中的属性/值对。
当使用Zend_Form时,如果元素无效,则表单通过无序列表返回错误。我如何改变这个使用段落标签呢?如何更改Zend_View_Helpers_FormErrors使用的标签?
我试图为元素加载错误装饰器,并调用setOptions()来传递一堆标签来替换Zend_Form_Decorator_FormErrors使用的ul/li东西,但这并没有工作= /相反Zend_Form_Decorator_Errors只是把选项作为ul标签中的属性/值对。
而不是扩展错误装饰器我已经扩展了formErrors视图帮助器,让它接受并处理数组中的选项。该formErrors视图助手已经制定者,让我改变标签使用:
class My_View_Helper_FormErrors extends Zend_View_Helper_FormErrors
{
public function formErrors($errors, array $options = null)
{
if(key_exists('htmlElementStart', $options))
{
$this->setElementStart($options['htmlElementStart']);
unset($options['htmlElementStart']);
}
if(key_exists('htmlElementEnd', $options))
{
$this->setElementEnd($options['htmlElementEnd']);
unset($options['htmlElementEnd']);
}
if(key_exists('htmlElementSeparator', $options))
{
$this->setElementSeparator($options['htmlElementSeparator']);
unset($options['htmlElementSeparator']);
}
return parent::formErrors($errors, $options);
}
}
将选项传递,我得到了它的错误装饰和setOptions():
$element->getDecorator()->setOptions(
array(
'class' => 'error',
'htmlElementStart' => '<p%s>',
'htmlElementEnd' => '</p>',
'htmlElementSeparator' => '<br/>'
)
);
,并告诉元素加载帮手路径:
$element->getView()->addHelperPath('My/View/Helper', 'My_View_Helper');
不幸的是,你不能通过传递一堆选项来改变输出格式。 如果你想改变这种行为,你别无选择,只能编写你自己的Errors装饰器(很可能是原始Errors装饰器的派生物)。这个新的装饰器必须覆盖render()
方法,以便能够调用你自己的视图帮助器(而不是ZF默认使用的formErrors
帮助器)。
我已经得出同样的结论,并已开始这样做。我会让你知道我如何继续。 – 2011-01-31 20:31:15