Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour
J'utilise Zend_Form pour générer un formulaire avec le code suivant :
<?php class forms_AjouterMembreForm extends Zend_Form { public function __construct($options = null) { parent::__construct($options); $this->setName('ajoutermembre'); $this->addElementPrefixPath('decorators', 'decorators/', 'decorator'); $pseudo = new Zend_Form_Element_Text('pseudo'); $pseudo->setLabel('Utilisateur') ->setRequired(true) ->addValidator('NotEmpty') ->addDecorator('HtmlTag', array('tag' => 'p')); $password = new Zend_Form_Element_Password('password'); $password->addDecorator(new decorators_BulleAide()) ->setDescription('bidule') ->setLabel('Mot de passe') ->setRequired(true) ->addValidator('NotEmpty') ->addDecorator('HtmlTag', array('tag' => 'p')); $password_confirmation = new Zend_Form_Element_Password('password_confirmation'); $password_confirmation->addDecorator('HtmlTag', array('tag' => 'p')) ->setLabel('Confirmation') //Validateur defini dans /models/validateurs/ValeurEgale.php ->addValidator(new validateurs_ValeurEgale($_POST['password'])); $submit = new Zend_Form_Element_Submit('submit'); $submit->setLabel('Valider l\'inscription'); $this->addElements(array($pseudo,$password,$password_confirmation,$submit)); } } ?>
J'essaie désespérement de remplacer les <dd> et <dt> générés par Zend_Form, et j'y suis parvenu en partie :
<form name="ajoutermembre" id="ajoutermembre" enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form"> <dt><label for="pseudo" class="required">Utilisateur</label></dt> <p> <input type="text" name="pseudo" id="pseudo" value=""></p> <dt><label for="password" class="required">Mot de passe</label></dt> <p> <input type="password" name="password" id="password" value=""></p><div class="aide">bidule</div> <dt><label for="password_confirmation" class="optional">Confirmation</label></dt> <p> <input type="password" name="password_confirmation" id="password_confirmation" value=""></p> <dt></dt><dd> <input type="submit" name="submit" id="submit" value="Valider l'inscription"></dd></dl></form>
Résultat : les <label> sortent du <p>
Pour info, j'ai un décorateur personnalisé :
<?php class decorators_BulleAide extends Zend_Form_Decorator_Abstract { public function preparerAide() { $element = $this->getElement(); $desc = $element->getDescription(); return '<div class="aide">' . $desc . '</div>'; } public function render($content) { $element = $this->getElement(); $aide = $this->preparerAide(); $output = $aide; return $content . $output; } }
Si quelqu'un peut m'aider à y voir clair...merci d'avance
Dernière modification par fetard (17-04-2008 12:48:00)
Hors ligne
A mon avis c'est normal.
Pour avoir ce code :
<dt></dt><dd><p class="form_element"><div><label for="NOM" class="required">Nom</label></div> <input type="text" name="NOM" id="NOM" value="" /></p></dd> <dt></dt>
je dois ajouter ce décorateur :
$this->setElementDecorators(array( 'ViewHelper', 'Errors', array('Label', array('tag' => 'div')), //-- Si on ne met pas, n'est pas affiché array('decorator'=> array('p' => 'HtmlTag'),'options' => array('tag' => 'p', 'class' => 'form_element')), array('DtDdWrapper') ));
La, j'applique à tous les éléments, à toi d'adapter pour chaque éléments.
Dernière modification par whitespirit (21-04-2008 09:40:58)
Hors ligne
Pages: 1