Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-04-2008 12:47:25

fetard
Membre
Date d'inscription: 08-04-2008
Messages: 21

[Zend Form] Utiliser des <p> au lieu des <dd>,<dt> habituels

Bonjour
J'utilise Zend_Form pour générer un formulaire avec le code suivant :

Code:

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

Code:

<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> sad
Pour info, j'ai un décorateur personnalisé :

Code:

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

 

#2 21-04-2008 08:31:55

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Zend Form] Utiliser des <p> au lieu des <dd>,<dt> habituels

A mon avis c'est normal.

Pour avoir ce code :

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 :

Code:

    $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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages