5

スタイリングの目的で、<div>ある要素の最初に開口部を配置し</div>、別の要素の最後に終了タグを配置する必要があります。HtmlDecoratorのドキュメントを見ると、それを正しく行う方法、またはこれが使用するのに適切なデコレータであるかどうかがわかりません。これを実現するためだけに独自のデコレータを作成するのは無駄に思えます。

4

2 に答える 2

16

<div>を追加する要素に、次のデコレータを追加します。

array(
    array('openDiv' =>'HtmlTag'),
    array('tag' => 'div', 'openOnly' => true)
)

</ div>を追加する要素に、次のデコレータを追加します。

array(
    array('closeDiv' =>'HtmlTag'),
    array('tag' => 'div', 'closeOnly' => true)
)
于 2010-10-04T15:08:45.853 に答える
7

デコレータで表示グループを使用できるように聞こえます。HtmlTag

何かのようなもの:

$form = new Zend_Form();

$form->addElement('text', 'elt1', array(
    'label' => 'Element 1',
));
$form->addElement('text', 'elt2', array(
    'label' => 'Element 2',
));

$form->addDisplayGroup(array('elt1', 'elt2'), 'myDisplayGroup');
$group = $form->getDisplayGroup('myDisplayGroup');

$group->setDecorators(array(
   'FormElements',
   array('HtmlTag', array('tag' => 'div', 'class' => 'myClass'))
));

これにより、次のような HTML が生成されます。

<form method="post" action="" enctype="application/x-www-form-urlencoded">
    <dl class="zend_form">
        <div class="myClass">
            <dt id="elt1-label"><label class="optional" for="elt1">Element 1</label></dt>
            <dd id="elt1-element"><input type="text" value="" id="elt1" name="elt1"></dd>
            <dt id="elt2-label"><label class="optional" for="elt2">Element 2</label></dt>
            <dd id="elt2-element"><input type="text" value="" id="elt2" name="elt2"></dd>
        </div>
    </dl>
</form>

もちろん、<dl>、<dt>、および <dd> のすべての狂気の中に <div> タグを詰め込むと、無効なマークアップが生成されますが、フォーム要素に異なるデコレータを指定して、必要な <div> ラップを作成していると思います。最終的に有効になります。

また、より一般的なマークアップ操作で注目に値するのは、AnyMarkup Decoratorです。

于 2010-10-03T06:11:51.230 に答える