エラーデコレータを拡張する代わりに、formErrorsビューヘルパーを拡張して、配列内のオプションを受け入れて処理するようにしました。私はそれにエラーデコレータとはsetOptions()だ、
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);
}
}
オプションを渡すには:
$element->getDecorator()->setOptions(
array(
'class' => 'error',
'htmlElementStart' => '<p%s>',
'htmlElementEnd' => '</p>',
'htmlElementSeparator' => '<br/>'
)
);
をまたに要素を教えてはFormErrorsビューヘルパーを使用している私は、タグを変更できるようにするセッターを持っています
$element->getView()->addHelperPath('My/View/Helper', 'My_View_Helper');
私は同じ結論に達しており、すでにこれをやり始めています。私はどのように乗っているかを教えてあげます。 –
ErrorsデコレータはformErrorsヘルパーにプロキシしています(どちらもすでに分かっています)。エラーデコレータのrender()メソッドを上書きするのではなく、formErrorsビューヘルパーを拡張してオプションの配列を受け入れて処理しました。 –
それはまさに私がやることです。 – akond