Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut.,
je sollicite votre aide concernant les décorateurs de Zend_Form, qui m'ont l'air bien complexes et (très) mal documentés.
En gros, lorsque je fais un $form->addElement(xxx), je voudrais que l'élément complet (label compris) soit encadré par des balises div. Par défaut, ça génère le code ci-dessous :
<dt><label for="xxx">xxx</label></dt> <dd><input yyy /></dd>
Pour l'instant, j'ai réussi à virer les dt et les dd mais impossible de faire encadrer l'ensemble par des balises div, et même de virer <label>...
En gros, ce que je cherche à faire, c'est un truc de ce genre-là :
<div> <div class="label">mon label</label> <div class="element"><input xxx /></div> </div>
ou encore :
<table> <tr> <td>mon label</td> <td><input xxx /></td> </tr> </table>
Une idée du code à utiliser ?
Merci
Dernière modification par Mr.MoOx (11-02-2008 13:54:17)
Hors ligne
J'ai finalement trouvé la solution à mon problème :
http://www.nabble.com/How-render-Zend_F … 16154.html
Hors ligne
Bonjour,
J'essai aussi d'utiliser les "decorators" dans Zend_Form, mais j'arrive pas à avoir le résultat que je souhaite ... Je voudrais avoir la forme ci-dessous :
<form> <div> <label for="name">Name</label><input type="text" name="name" id="name" /> </div> </form>
Merci d'avance,
Hors ligne
J'ai trouvé!!!
$form->setDecorators( array( 'FormElements', 'Form' ) ); $form->setElementDecorators(array('ViewHelper','Label',array('HtmlTag', array('tag' => 'div'))));
Il faut mettre le tout avant le render() de notre formulaire ...
Hors ligne
Faut avouez que c'est pas simple et mal documenté les décorateurs.
Perso, j'ai renoncé à utiliser mon 'propre balisage' et j'ai modifié mes CSS pour coller aux dd/dt
Hors ligne
Ouais ... effectivement, c'est pas toujours très clair!!
Bon, j'ai tout de même mes balises <div>, mais maintenant, j'aimerais ajouter une balise <div class="errors"></div> après le champs <input /> ... Des suggestions? J'ai essayé plein de trucs, mais sans résultat ...
<form> <div> <label for="name">Name</label><input type="text" name="name" id="name" /><div class="errors"></div> </div> </form>
Je vais utiliser ce <div> pour y afficher des réponses AJAX à propos du champs associé ... donc, parlez moi pas de l'affichage des Errors avec Zend_Form ;-)
Dernière modification par jprl12 (13-03-2008 20:27:03)
Hors ligne
D'apres le code du décorateur, c'est pas prévu.
Pourtant, dans le View_Helper_FormErrors, il y a bien les fonctions setElementStart et setElementEnd...
Je ne sais pas, le but est donc d'atteindre le View_Helper_FormErrors. En passant par le gestionnaire d'Helper alors...
Hors ligne