5

Für das Styling muss ich eine öffnung <div> am Anfang eines Elements und eine schließende </div> Markierung am Ende einer anderen setzen. Wenn ich auf die Dokumente für HtmlDecorator schaue, kann ich nicht herausfinden, wie man es richtig macht, oder ob dies sogar der richtige Dekorateur ist. Es erscheint verschwenderisch, einen eigenen Dekorateur zu kreieren, nur um das zu erreichen.Anfügen oder Voranstellen von HTML-Tags an Zend Formularelement

Antwort

16

Auf dem Element, in dem Sie eine <div>, fügen Sie diesen Dekorateur hinzufügen möchten:

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

Auf dem Element, in dem Sie eine </div > hinzufügen möchten, fügen Sie diese Dekorateur:

array(
    array('closeDiv' =>'HtmlTag'), 
    array('tag' => 'div', 'closeOnly' => true) 
) 
+0

Dies ist genau das, was ich in diesem speziellen Fall suche, danke! – ashurexm

7

Klingt, als könnten Sie einen display group mit einem HtmlTag Dekorateur verwenden.

Etwas wie:

$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')) 
)); 

Dies erzeugt HTML wie folgt:

<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> 

Natürlich Jamming ein <div> Tag innerhalb dieser alle <dl>, <dt> und <dd> Wahnsinn erzeugt ungültiges Markup, aber ich nehme an, dass Sie verschiedene Dekoratoren für Ihre Formularelemente angeben, so dass th e <div> wrap Sie Wunsch wird letztlich gültig sein.

Ebenfalls bemerkenswert für allgemeine Markup-Manipulationen ist die AnyMarkup Decorator.

+0

DavidW, Danke für das tolle Beispiel. Ich habe total vergessen, Display-Gruppen zu verwenden. – ashurexm

+0

Mein Vergnügen ;-) –

Verwandte Themen