Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 :
... 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 :
<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"> </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 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 :
<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 é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
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
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
$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
Bonjour,
Ou alors, pour les submit :
$sort->removeDecorator('dtddwrapper');
Hors ligne
Merci, cela va me servir.
Hors ligne
Pages: 1