2010-11-30 15 views
0

DisplayGroupを使用して、グループ内のいくつかの要素をレンダリングしています。今私がやりたいことは、このグループを単一のテーブル行にレンダリングすることです。しかし、DisplayGroupsのDecoratorsはではなく、は単純な要素と同じように動作することが判明しました。例:Zend FrameworkのDisplayGroupデコレータ

$content = $this->getDisplayGroup('group'); 
$content->setDecorators(array(
     'FormElements', 
     array('HtmlTag', array('tag' => 'table', 'class' => 'element')), 
     )); 

これはちょうど私のDisplayGroupの終わりに <table></table>を置きます。また、私はそれらを別名しようとしました:

array(array('elementDiv' => 'HtmlTag'), array('tag' => 'table','openOnly'=>true)), 
'FormElements', 
array(array('td' => 'HtmlTag'), array('tag' => 'table','closeOnly'=>true)), 
そして、それはまだのみ終了タグの中に置きます:

array(array('elementDiv' => 'HtmlTag'), array('tag' => 'table')), 
'FormElements', 
array(array('td' => 'HtmlTag'), array('tag' => 'table')), 

はまだ両方がopenOnlycloseOnlyを試したことのない、一つの場所にそれらを置きます。これらを<td>に変更すると、すべて正常に動作しますが、<table>ではなく何かが欠けていますか?

+1

'HtmlTag'デコレータはタグを区別しないので、うまく動作するはずです。表示タグの末尾にテーブルタグを置くと、実際にレンダリングされたソースに表示されますか? – Phil

+0

はい。私はスタック内にデコレータを配置する位置にオープンタグとクローズタグを並べて配置します。 –

+0

私はちょうどこれを試みて同じ結果を得ているようだが、レンダリングされたマークアップを検査するためにfirebugを使用していて、実際には、表タグが表示グループを囲んでいることがわかった(そして、 Zend/Form/Decorator/HtmlTag.phpのコードをステップ実行した場合も同様です)。だから、私の場合は、ファンクバグの予想されたものではないレンダリングされたマークアップの解釈です。おそらく同様の問題があります。 – jah

答えて

0

したがって、jahが正しかったです。追加されていないテーブルは、実際にはソース視聴者のバグでした。

$group->setDecorators(array(

      'FormElements', 
     array('Description', array('escape' => false, 'tag' => false)), 
     array('HtmlTag', array('tag' => 'table', 'class' => 'element')), 
)); 

これは私のためのトリックでした。 Description Decoratorが何をしているのかは分かりませんが、テーブルは必要に応じてレンダリングされます。

関連する問題