Bonjour
Je voudrais savoir s'il est possible avec les décorateur standards de faire ajouter une classe qui serait spécifiée par l'element qui appelle le décorateur.
Je m'explique, dans un formulaire j'ai plusieurs displaygroup, pour chaque display groupe je veux afficher un picto (identité,adresse, mail,...) à coté du titre du display group. Pour cela j'utilise une class différente pour chacun (un ID m'irait aussi - je ne ferais pas la difficile). Je souhaiterai que cette classe (ou l'ID) soit ajoutée par le décorateur.
Voici le code HTML que je souhaite obtenir (en rouge ce que je souhaite être variable)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <div class="bloc blocident"> <h3>Identité</h3> <div class="ctrlHolder"> <label for="nom" class="required">Nom :</label> <input type="text" name="nom" id="nom" value="" /> </div> <div class="ctrlHolder"> <label for="prenom" class="required">Prénom :</label> <input type="text" name="prenom" id="prenom" value="" /> </div> </div>
Pour ne pas avoir a ré-ecrire le décorateur a chaque fois j'ai une class spéciale de qui etend la class zend_form et tous mes formulaires l'etendent.
J'ai ai déclaré un décorateur par defaut pour les displaygroup :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 protected $_standardGroupDecorator = array( array('Description', 'options' => array('tag' => 'h3')), 'FormElements', array('HtmlTag', 'options' => array('tag' => 'div', 'class' => 'bloc')), );
Dans mon formule, je déclare le displaygroup :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $this->addDisplayGroup(array('nom', 'prenom'),'identite', array( 'disableLoadDefaultDecorators' => true, 'decorators' => $this->_standardGroupDecorator, 'description' => "Identité", 'class' => "blocident" ));
J'obtiens le code attendu sauf que je n'ai pas la class blocident qui est spécifiée dans la création de mon displaygroup (et qui biensur sera différente pour les autres displaygroup de mon formulaire).
Est ce que je suis obligée d'ecrire mon propre décorateur ou est ce que je peux parvenir a adresser cette class depuis le décorateur général.
Evidement si je spécifiais le décorateur directement lors de la création du displaygroup ca sera faisable mais ca ne me convient pas, je veux que les élements de mise en page soient centralisés pour que je puisse les modifier et être sur qu'ils soient partout identiques.
Merci d'avance
Partager