2011-01-31 13 views
1

Zend_Formを使用する場合、要素が有効でない場合、フォームは順序付けられていないリストによってエラーを返します。代わりに段落タグを使用するようにこれを変更するにはどうすればよいですか?Zend_View_Helpers_FormErrorsで使用されるタグを変更するにはどうすればよいですか?

私は要素のエラーデコレータを読み込み、Zend_Form_Decorator_FormErrorsで使用されているul/liのものを置き換えるタグの束を渡すようにしようとしましたが、動作しませんでした= /代わりにZend_Form_Decorator_Errors ulタグ内の属性/値の組としてのオプション。

答えて

2

エラーデコレータを拡張する代わりに、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'); 
1

残念ながら、一連のオプションを渡すだけで出力形式を変更することはできません。 この動作を変更したい場合は、独自のErrorsデコレータ(おそらく元のErrorsデコレータの派生物)を作成する以外に選択肢はありません。この新しいデコレータは、ZFがデフォルトで使用するformErrorsヘルパーの代わりに独自のビューヘルパーを呼び出せるように、render()メソッドを上書きする必要があります。

+0

私は同じ結論に達しており、すでにこれをやり始めています。私はどのように乗っているかを教えてあげます。 –

+0

ErrorsデコレータはformErrorsヘルパーにプロキシしています(どちらもすでに分かっています)。エラーデコレータのrender()メソッドを上書きするのではなく、formErrorsビューヘルパーを拡張してオプションの配列を受け入れて処理しました。 –

+0

それはまさに私がやることです。 – akond

関連する問題