Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis en train de développer un formulaire avec Zend_Form par le biais d'un fichier de config INI.
Tout allait bien jusqu'au moment où j'ai eu envie d'ajouter un astérisque devant les labels des champs obligatoires...
Pour cela, il fallait utiliser les décorateurs.
Voici donc ce que j'ai rajouté dans mon fichier de config :
("register" est le nom de mon formulaire)
; Form Decorators register.decorators.formElements.decorator = "FormElements" register.decorators.form.decorator = "Form" ; Global Element Decorators register.elementDecorators.decorator = "ViewHelper" register.elementDecorators.error.decorator = "Errors" register.elementDecorators.label.decorator = "Label" register.elementDecorators.label.options.requiredPrefix = "* " register.elementDecorators.formElements.decorator = "HtmlTag" register.elementDecorators.formElements.options.tag = "div" ; username element register.elements.username.type = "text" register.elements.username.options.class = "text" register.elements.username.options.label = "Login" register.elements.username.options.required = true ; password element register.elements.password.type = "password" register.elements.password.options.class = "text" register.elements.password.options.label = "Password" register.elements.username.options.required = true ; submit element register.elements.submit.type = "submit" register.elements.submit.options.class = "submit" register.elements.submit.options.label = "Submit"
Ceci me permet de générer un formulaire dont le code html est le suivant :
<form method="post" action="/register/submit" enctype="application/x-www-form-urlencoded"> <div> <label class="required" for="username">* Login</label> <input type="text" class="text" value="" id="username" name="username"/> </div> <div> <label class="required" for="password">* Password</label> <input type="password" class="text" value="" id="password" name="password"/> </div> <div> <label class="optional" for="submit">Submit</label> <input type="submit" class="submit" value="Submit" id="submit" name="submit"/> </div> </form>
Problème :
Comme vous pouvez le voir, le bouton Submit possède un label que je voudrai supprimer.
J'ai tenté d'affecter un décorateur non pas au formulaire mais directement à l'élément submit, aucun résultat
J'ai trouvé un post traitant du meme sujet (http://www.z-f.fr/forum/viewtopic.php?id=894) mais je n'arrive pas à le reproduire sous forme d'un fichier de config.
Jdois avouer que j'ai un peu de mal avec cette écriture
Help
Merci d'avance !
Jon
Dernière modification par jon301 (27-10-2008 21:40:48)
Hors ligne
Problème résolu.
En fait quand on utilise l'attribut elementDecorators d'un formulaire, les champs sont traités de manière égale quelque soit leur type (text, submit, etc.), d'où le fait que même le bouton submit se voit attribuer un label.
Il n'est ensuite plus possible de surcharger le decorateur d'un element pris individuellement, et ça c'est dommage !
La solution (et pas des plus élégantes) est donc de ne pas utiliser l'attribut générique elementDecorators, mais d'affecter à chaque element son propre decorator :
register.elements.username.decorators....
register.elements.password.decorators....
register.elements.submit.decorators....
Voila, par contre ne vous étonnez pas si votre fichier de config se voit rallongé d'une vingtaine de lignes...
En espérant avoir aidé
Jon
Hors ligne
Pages: 1