2010-11-29 32 views
0

code suivant:Comment utiliser les décorateurs existants dans Zend Framework?

$this->addElement('text', 'email', array(
    'label' => 'Your email address:', 
)); 

$this->addElement('submit', 'submit', array(
    'label' => 'Sign Guestbook', 
)); 

produit HTML suivant:

<form enctype="application/x-www-form-urlencoded" action="" method="post"> 
    <dl class="zend_form"> 
     <dt id="email-label"> 
      <label for="email" class="optional">Your email address:</label> 
     </dt> 
     <dd id="email-element"> 
      <input type="text" name="email" id="email" value="" /> 
     </dd> 

     <dt id="submit-label"> 
      &#160; 
     </dt> 
     <dd id="submit-element"> 
      <input type="submit" name="submit" id="submit" value="Sign Guestbook" /> 
     </dd> 
    </dl> 
</form> 

Je sais, je peux écrire mes propres décorateurs, mais je voudrais savoir, comment utiliser les décorateurs existants, pour créer suivant HTML :

<form enctype="application/x-www-form-urlencoded" action="" method="post"> 
    <div> 
     <label for="email" class="optional">Your email address:</label> 
     <input type="text" name="email" id="email" value="" class="my_class" /> 
    </div> 

    <div> 
     <input type="submit" name="submit" id="submit" value="Sign Guestbook" class="my_class" /> 
    </div> 
</form> 

Pas <dl/>, <dt/>, <dd/>, a ajouté class attribut.

Par exemple, je sais, comment enlever tag <dl/> entourant:

$this->addDecorator('FormElements') 
    ->addDecorator('Form'); 

d'autres changements possibles sans écrire des décorateurs personnalisés?

Répondre

1

Ce (ajoutez ce tableau à votre tableau de paramètres, qui se compose désormais d'une seule option étiquette) devrait aider avec votre champ email:

'class' => 'my_class', 
'decorators' => array(
    'ViewHelper', 
    'Errors', 
    'Label', 
    array('HtmlTag', array('tag' => 'div')) 
) 

Et le même sans Label - pour soumettre.

+0

Merci. Semble logique :) – prostynick

+0

Heh, c'est presque exactement la même chose ici: http://framework.zend.com/manual/fr/zend.form.elements.html#zend.form.elements.custom – prostynick