2010-01-27 7 views
0

J'essaye de changer le html produit par Zend_Form utilisant des décorateurs.Modifier la sortie HTML de Zend_Form

Je veux le code HTML pour ressembler émis ceci:

<form> 
    <fieldset> 
    <legend>Your Details</legend> 
    <dl> 
    <dt>label etc</dt> 
    <dd>input etc</dd> 
    <dt>label etc</dt> 
    <dd>input etc</dd> 
    </dl> 
    </fieldset> 
    <fieldset> 
    <legend>Address Details</legend> 
    <dl> 
    <dt>label etc</dt> 
    <dd>input etc</dd> 
    <dt>label etc</dt> 
    <dd>input etc</dd> 
    ... etc ... 
    </dl> 
    </fieldset> 
</form> 

Je l'ai déjà cassé les sections vers le bas que je veux dans les fieldsets spécifiques en utilisant des groupes d'affichage, par exemple

$this->addDisplayGroup(array('name','email','telephone'),'yourdetails'); 
$yourdetails= $this->getDisplayGroup('personal'); 
$yourdetails->setDecorators(array(
      'FormElements', 
      'Fieldset' 
)); 

Cela me donne chaque section assis dans un fieldset, mais chaque élément de formulaire est maintenant manque un dl d'emballage si ce que j'ai est:

<form> 
    <fieldset> 
    <dt>label etc</dt> 
    <dd>input etc</dd> 
    <dt>label etc</dt> 
    <dd>input etc</dd> 
    </fieldset> 
    ... etc 
</form> 

Répondre

2

Essayez ceci:

$yourdetails->setDecorators(array(
      'FormElements', 
      array('HtmlTag', array('tag' => 'dl')), 
      'Fieldset' 
)); 

Ce devrait:

  1. Itérer à travers l'élément s
  2. Ajouter un <dl> autour du groupe d'éléments
  3. Ajouter un <fieldset> autour du <dl>
+0

En effet, il fait! Merci beaucoup :) – robjmills