使用Zend_Form时,如果元素无效,表单将通过无序列表返回错误。如何将其更改为使用段落标记?
我试图为元素加载Errors装饰器并调用setOptions()来传递一堆标签来替换Zend_Form_Decorator_FormErrors使用的ul / li东西,但这不起作用= /而不是Zend_Form_Decorator_Errors只是放了选项作为ul标记中的属性/值对。
答案 0 :(得分:2)
我没有扩展Errors装饰器,而是扩展了formErrors视图助手,让它接受并处理数组中的选项。 formErrors视图助手具有setter,可以让我更改正在使用的标记:
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');
答案 1 :(得分:1)
不幸的是,你不能通过传递一堆选项来改变输出格式。
如果你想改变这种行为,你别无选择,只能编写自己的错误装饰器(很可能是原始错误装饰器的衍生物)。这个新的装饰器必须覆盖它的render ()
方法才能调用你自己的视图助手(而不是ZF默认使用的formErrors
助手)。