Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-11-2011 10:00:06

mamady.kaba
Membre
Date d'inscription: 25-11-2010
Messages: 20

[Zend_Form][1.11] Zend_Form_Decorator - Retirer les balises dd et dt

Bonjour,

J'ai un problème à la création de mon zend_form.

voici le code php que j'ai pour créer mon formulaire :

Code:

...
self::$form_instance->setName($aFormDatas['nom_form']);
        self::$form_instance->setAction('xxxx')->setMethod('post');
        self::$form_instance->setDecorators(array('FormElements',array('HtmlTag', array('tag' => 'table')),'Form'));
        //Decorateurs
           $aDecorators = array('ViewHelper', 'Errors',
            array('Description', array('tag' => 'p', 'class' => 'description')),
            array('HtmlTag', array('tag' => 'td')),
            array('Label', array('tag' => 'td')),
        );

        // Elements
        $oIdConnexion = new Zend_Form_Element_Text($aFormDatas['id_connexion']);
        $oIdConnexion->setName('identifiant')->setLabel($aFormDatas['id_connexion'])
        ->setRequired(true)->addFilter('StripTags')->addFilter('StringTrim')->addValidator('NotEmpty')
        ->addDecorators($aDecorators);

        $oEmail = new Zend_Form_Element_Text($aFormDatas['email']);
        $oEmail->setName($aFormDatas['email'])->setLabel($aFormDatas['email'])->setRequired(true)->addFilter('StripTags')
        ->addFilter('StringTrim')->addValidator('NotEmpty')->addValidator('EmailAddress')->addValidator('Db_NoRecordExists')
        ->addDecorators($aDecorators);

        $oPassword = new Zend_Form_Element_Password('password');
        $oPassword->setName('password')->setLabel($aFormDatas['password'])->setRequired(true)->addFilter('StripTags')->addFilter('StringTrim')
        ->addValidator('NotEmpty')->addDecorators($aDecorators);

        $oSubmit = new Zend_Form_Element_Submit('submit');
        $oSubmit->setName($aFormDatas['connexion'])->setLabel($aFormDatas['connexion'])->setAttrib('id', 'connexion_button')
        ->addDecorators(array(
            'ViewHelper',
            array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
            array(array('label' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'prepend')),
            array(array('row' => 'HtmlTag'), array('tag' => 'td')),
        ));

        self::$form_instance->addElements(array($oIdConnexion,$oEmail, $oPassword, $oSubmit));
...

Voici ce que j'obtiens en html :

Code:

<form id="formConnexion" enctype="application/x-www-form-urlencoded" action="/xxx/xxxx/xxxx" method="post">
<table>
<tbody>
<tr>
<td id="identifiant-label"><label for="identifiant" class="required">Identifiant de connexion</label></td>
<td><input type="text" name="identifiant" id="identifiant" value="" /></td>
<td id="Email-label"><label for="Email" class="required">Email</label></td>
<td><input type="text" name="Email" id="Email" value="" /></td>
<td id="password-label"><label for="password" class="required">Mot de passe</label></td>
<td><input type="password" name="password" id="password" value="" /></td>
<td><td></td>
<td class="element">
<dt id="Connexion-label">&nbsp;</dt>
<dd id="Connexion-element"><input type="submit" name="Connexion" id="connexion_button" value="Connexion" /></dd>
</td>
</tr>
</tbody>
</table>
</form>

Il y a deux choses qui ne me conviennent pas dans ce code html :

- Il y a quand même l'apparition de balises dt, dd et a l'interieur du dt il y a un &nbsp; qui n'est pas voulu  dans mon code alors que j'ai mis un décorateur pour l'enlever
- Les labels sont contenus dans les mêmes balises tr que les inputs or j'aimerai avoir d'un coté un tr contenant des balises td qui contiennent elles mêmes des labels et d'un autre une autre balise tr contenant des balises td qui contiennent elles mêmes les inputs correspondants à  ces labels.

voici le code html que j'aimerai obtenir :

Code:

<form id="formConnexion" enctype="application/x-www-form-urlencoded" action="/xxx/xxxx/xxxx" method="post">
<table>
<tbody>
<tr>
<td class="label_connexion"><label for="email">Identifiant Professionnel</label></td>
<td class="label_connexion"><label for="email">Adresse &eacute;lectronique</label></td>
<td class="label_connexion"><label for="password">Mot de passe</label></td>
</tr>
<tr>
<td><input type="text" id="input_text" name="identifiant" tabindex="1" /></td>
<td><input type="text" id="input_text" name="email" tabindex="1" /></td>
<td><input type="password" id="input_text" name="password" tabindex="3" /></td>
<td><label for="connexion"><input value="Connexion" id="connexion_button" tabindex="4" type="submit" /></label></td>
</tr>
</tbody>
</table>
</form>

Dernière modification par mamady.kaba (09-11-2011 10:18:30)

Hors ligne

 

#2 09-11-2011 14:38:27

2binfree
Nouveau membre
Date d'inscription: 09-11-2011
Messages: 2

Re: [Zend_Form][1.11] Zend_Form_Decorator - Retirer les balises dd et dt

Salut

pour le problème de balise dd et dt, je m'en suis sorti avec la méthode setOption, en plaçant la valeur null sur 'tag'.
Un exemple :
$sort->getDecorator('Label')->setOption('tag', null);

j'espère que ça pourra t'aider

Hors ligne

 

#3 09-11-2011 15:03:56

mamady.kaba
Membre
Date d'inscription: 25-11-2010
Messages: 20

Re: [Zend_Form][1.11] Zend_Form_Decorator - Retirer les balises dd et dt

Merci d'avoir répondu.
Ce code on le met ou ? A la création de l'élément qui contient des balises dt et dd ? dans mon cas c'est l'input button.
Ou $sort correspond au formulaire ?

Hors ligne

 

#4 09-11-2011 15:33:17

2binfree
Nouveau membre
Date d'inscription: 09-11-2011
Messages: 2

Re: [Zend_Form][1.11] Zend_Form_Decorator - Retirer les balises dd et dt

$sort correspond dans mon cas à l'élément HTML créé. Voci l'ensemble de code concerné :

$sort = $this->createElement('select', 'sort');
$sort->setLabel('Trier par :');
$sort->getDecorator('Label')->setOption('tag', null);

le formulaire est représenté par $this

Hors ligne

 

#5 23-11-2011 09:13:45

Polzie
Membre
Date d'inscription: 12-03-2010
Messages: 20

Re: [Zend_Form][1.11] Zend_Form_Decorator - Retirer les balises dd et dt

Bonjour,
Ou alors, pour les submit :
$sort->removeDecorator('dtddwrapper');

Hors ligne

 

#6 02-08-2012 23:36:31

visualJack
Nouveau membre
Date d'inscription: 16-06-2012
Messages: 6

Re: [Zend_Form][1.11] Zend_Form_Decorator - Retirer les balises dd et dt

Merci, cela va me servir.

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