Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-03-2010 11:04:15

Cyrano
Membre
Lieu: Paris
Date d'inscription: 25-05-2007
Messages: 57
Site web

[Zend_Form] Comment éliminer les décorateurs

Bonjour,
je bataille depuis quelques jours afin de trouver comment utiliser Zend_Form sans les décorateurs et surtout pour virer le décorateur par défaut qui me crée une structure HTML qui ne correspond pas a mon besoin.

Je fouille le net et la doc depuis deux jours sans trouver de réponse claire et précise. La méthode setDisableLoadDefaultDecorators() ne change rien du tout, quant à pointer individuellement chaque élément avec la méthode removeDecorator() n'est pas plus efficace ou alors retire une partie seulement les balises dd ou dt tout en laissant le dl qui encadre l'ensemble.... J'ai même réussi à un moment donné à faire disparaitre complètement le formulaire ce qui est quand même un comble.

Est-ce qu'il n'y aurait pas moyen d'utiliser Zend_Form un peu à la manière de HTML_QuickForm où je gère moi-même la structure HTML et la mise en page avec des CSS ?

Toute piste vers un tuto professionnel, clair et précis sera bienvenu (et on oublie les tutos de Julien s'il vous plait, je les connais et la réponse ne s'y trouve pas)


Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends.
B. Franklin.

Hors ligne

 

#2 09-03-2010 11:25:30

iop974
Membre
Date d'inscription: 27-02-2009
Messages: 72

Re: [Zend_Form] Comment éliminer les décorateurs

Regarde la :
http://wiip.fr/content/zend-form-config … -et-les-dd

c'est bien expliquer :p

Hors ligne

 

#3 09-03-2010 11:47:48

Cyrano
Membre
Lieu: Paris
Date d'inscription: 25-05-2007
Messages: 57
Site web

Re: [Zend_Form] Comment éliminer les décorateurs

Cool, merci iop974,
on progresse, j'ai enfin réussi à virer ce foutu code html indésirable.

Reste à voir la mise en place de ma structure HTML selon mes propres critère et ça devrait fonctionner.

[Edit] Ha ben tiens donc, je ne suis presque pas surpris. Je ne sais pas quelle équipe de bras cassés a programmé le Zend_Form, mais je pense que je vais utiliser un autre système.
Là, je n'ai effectivement plus les balises dl, dt ni dd. À la place, j'ai un nouvel attribut dans mes labels : «tag=""»

C'est du grand n'importe quoi ce bricolage.

Enfin bon, merci quand même, j'aurais essayé, mais là j'en ai plus que marre de ces co*****es.

@+

Dernière modification par Cyrano (09-03-2010 11:52:16)


Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends.
B. Franklin.

Hors ligne

 

#4 09-03-2010 12:33:51

iop974
Membre
Date d'inscription: 27-02-2009
Messages: 72

Re: [Zend_Form] Comment éliminer les décorateurs

de rien

Si ta suivis le tuto normalement tes balise DD et autres ave cle tutos ça te permet de les remplacer par les balise de tableau.

Par contre, il ne faut pas laissé les tag vide quand tu crées ton décorateur faut mettre une balise dedans soit des td tr th etc.... ou soit ce que tu veux <p> <span> <div> etc...

Hors ligne

 

#5 09-03-2010 13:26:40

Cyrano
Membre
Lieu: Paris
Date d'inscription: 25-05-2007
Messages: 57
Site web

Re: [Zend_Form] Comment éliminer les décorateurs

Sauf que justement, je ne veux rien du tout, et surtout pas de tableaux.
-1- les tableaux ne sont pas fait pour faire de la mise en page;
-2- je veux une gestion de formulaire, pas une mise en forme que je gère autrement;

En d'autre terme, les mecs qui ont développé Zend_Form se sont peut-être éclaté en rivalisant d'ingéniosité dans l'utilisation des Design Patterns, mais pour être tout à fait franc, je n'en ai strictement rien à faire.

Et en conclusion, je vais développer mon propre système, ça ira plus vite que de me casser la tête pour trouver comment hacker leurs bricolages sans intérêt.


Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends.
B. Franklin.

Hors ligne

 

#6 09-03-2010 13:32:51

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Form] Comment éliminer les décorateurs


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 09-03-2010 13:41:25

iop974
Membre
Date d'inscription: 27-02-2009
Messages: 72

Re: [Zend_Form] Comment éliminer les décorateurs

LOL
ok tu veux un truc tout nue ok ^^

Ben le lien qu'as mis mikaelkael pas mal !

Hors ligne

 

#8 09-03-2010 14:02:22

Cyrano
Membre
Lieu: Paris
Date d'inscription: 25-05-2007
Messages: 57
Site web

Re: [Zend_Form] Comment éliminer les décorateurs

Ha ben là effectivement ça a beaucoup plus de sens.

Merci Mikaelkael pour le lien. Apparemment ça répondrait précisément à ce que je cherche. Dommage que l'indexation Google ne l'ait pas fait ressortir en premier wink

Et comme tu dis iop974, je veux un truc tout nu : je crois qu'il ne faut pas tout mélanger. En l'occurrence, le mieux est l'ennemi du bien. je comprends volontiers ce qu'ont voulu faire les développeurs de Zend_Form, mais ils sont tombé dans l'excès inverse en oubliant un principe de programmation fondamental en POO : une classe ne doit faire qu'une seule chose, mais le faire parfaitement. Avec le couplage automatique et difficile à débarquer du décorateur, ils ont enfreint cette règle en rendant la classe capable de retourner un formulaire prêt à afficher, sauf que tous les développeur n'ont pas forcément besoin de ce type de structure en dl/dt/dd ou de tableaux html.

Par ailleurs, Julien Pauli lui-même him-self nous a dit alors que je suivais une formation Anaska Zend-Framework qu'il ne maitrisait pas le HTML en ajoutant plus ou moins que ça ne l'intéressait en fait pas vraiment. J'ai peur que ça ne reflète l'état d'esprit de beaucoup des développeurs du ZF : ils s'éclatent à plonger dans les profondeur de la programmation pointue en utilisant au mieux les meilleurs méthodes, les design patterns et autres bonnes pratiques, mais en se déconnectant de plus en plus de l'objectif final qui est, a toujours été et restera de faire du web.

Et justement, je voudrais rappeler qu'on fait du web. Que ce soit des sites publics ou de l'intranet de gestion, ça reste du web et donc du client/serveur qui dans la majorité des cas va aboutir dans un navigateur. Le code qui arrive là doit être standard et conforme. Ok, le dl/dt/dd est valide et conforme : et si je veux construire autrement ? Et encore je me limite au Zend_Form, je pourrais parler aussi de Zend_Db, j'en aurais pas mal à dire là dessus, mais ce serait hors sujet. Autant je n'ai jamais mis du tout le nez dans Symfony et j'avais depuis la première annonce du développement du ZF un à-priori favorable, autant avec le temps c'est devenu une énorme machine de plus en plus complexe et de moins en moins maniable, je commence à en revenir de plus en plus pour me tourner vers des solutions maison très largement moins lourdes.

Enfin bon, je vais mettre un petit moment en suspend ce que j'ai commencé à construire pour voir ce lien si c'est vraiment efficace.


Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends.
B. Franklin.

Hors ligne

 

#9 09-03-2010 14:13:49

Cyrano
Membre
Lieu: Paris
Date d'inscription: 25-05-2007
Messages: 57
Site web

Re: [Zend_Form] Comment éliminer les décorateurs

Bon ben finalement c'est pas mieux :
« <label for="title" tag="" class="optional">Title:</label>
        <input type="text" name="title" id="title" value=""/> »
L'attribut «tag», c'est du ZHTML sans doute, mais ça n'existe pas en HTML4 ni en XHTML.

Allez, j'aurais essayé, je laisse les amateurs s'amuser, pour ma part j'ai plus que largement ma dose et je vais reprendre mon propre développement.

@+


Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends.
B. Franklin.

Hors ligne

 

#10 09-03-2010 15:01:40

OsoPardo
Membre
Date d'inscription: 16-09-2008
Messages: 32

Re: [Zend_Form] Comment éliminer les décorateurs

Je n'ai pas encore réussi à trouver le temps de me plonger sérieusement sur Zend_Form mais j'avais jeté un coup d'œil au code des classes et il me semble bien qu'il y a bien les méthodes nécessaires pour récupérer la structure d'un formulaire et générer soit même le code HTML, non ?

Sinon je soutient à 100% Cyrano pour la conservation de la maitrise du code HTML au niveau de la vue, car un graphiste doit pouvoir lire ce code et le modifier sans l'aide d'un développeur.
De plus, si on compare la simplicité de l'HTML face au nombre de personnes sur ce forum qui ont des problèmes avec les décorateurs du Zend_Form, on se rend bien compte qu'il y a un problème de conception quelque part...

Hors ligne

 

#11 09-03-2010 15:36:59

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Form] Comment éliminer les décorateurs

Théoriquement, y'a pas 36000 façon de faire un formulaire. Et que ca çoit de dl, des ul, des p, ou autre, le css permet de faire ce qu'il vaut.
La seule différence est sémantique, certains préfères les ul, d'autres les p, ...

Pour moi, le pattern décorateur est correctement choisis en ce qui concerne Zend_Form


----
Gruiiik !

Hors ligne

 

#12 09-03-2010 17:14:18

OsoPardo
Membre
Date d'inscription: 16-09-2008
Messages: 32

Re: [Zend_Form] Comment éliminer les décorateurs

Ca dépend de ses besoins et contraintes.

Moi je pense qu'il y a une infinité de façon d'afficher un formulaire : outre les balises structurante table/ul/dl/p on peut, par exemple, vouloir ajouter du contenu avant ou après un champs de saisi particulier.
Je préfère donc laisser toute latitude à mon collègue graphiste pour faire les modifications qu'il veut sans qu'il est besoin de moi.

Heureusement dans un tutoriel que je vient de trouver - Decorators with Zend_Form - un exemple montre que l'on peut moduler le degré de dépendance entre le modèle et la vue :

Code:

<form action="<?= $this->escape($this->form->getAction() ?>"
      method="<?= $this->escape($this->form->getMethod() ?>">

<fieldset>
    <legend>Demographics</legend>
    <p>
        Please provide us the following information so we can know more about  you.
    </p>

    <?= $this->form->age ?>
    <?= $this->form->nationality ?>
    <?= $this->form->income ?>
</fieldset>

<?= $this->form->submit ?>
</form>

Je suppose qu'on doit pouvoir également personnaliser les champs de la même façon, par exemple pour pouvoir y définir une classe CSS sans modifier le code PHP.

Sur ce point Zend_Form me parait donc fidèle à l'esprit du ZF : on prend ce dont on à besoin et on l'utilise comme on veut.


Après l'utilisation des décorateurs semble déroutante pour pas mal de monde, mais pour avoir tenté à une époque d'écrire une librairie similaire je sais qu'il est difficile de ne pas arriver rapidement à une usine à gaz pour avoir une abstraction complète d'un code HTML pourtant simple de nature.

Dernière modification par OsoPardo (09-03-2010 17:30:52)

Hors ligne

 

#13 09-03-2010 18:58:12

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: [Zend_Form] Comment éliminer les décorateurs

Sinon, tu pourrai nous montrer un peu de code ? Afin de voir tes "erreurs".
J'ai une idée du problème que tu rencontres, mais sans le code qui va bien, je ne peux le confirmer wink

Hors ligne

 

#14 09-03-2010 20:30:22

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Form] Comment éliminer les décorateurs

De toute façon, si on reste dans cette optique de séparation des roles, le code html se retrouve avec un objet $form avec lequel il peut faire ce qu'il veut
Rappel : il y a les View_Helper correspondants dans Zend/View/Helper/Form*


----
Gruiiik !

Hors ligne

 

#15 09-03-2010 21:16:22

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Form] Comment éliminer les décorateurs

Et puis un autre ; http://static.zend.com/topics/Leveragin … -12-16.pdf

Par contre il faut peut-être être identifié pour le lire.

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#16 10-03-2010 05:36:59

iop974
Membre
Date d'inscription: 27-02-2009
Messages: 72

Re: [Zend_Form] Comment éliminer les décorateurs

J'ai bien relu le tuto enfin de compte c'est la même méthode que mon lien a part qu'il mais tag à null soit tag = ""

Du coup ça créer un attribut tag dans la balise Label ... à null qui sert a rien....
Un truc serait de les mettre dans des span et appliqué ta mise en forme.... mais bon hmm

Sinon le 2eme tuto de mikaelkael préconise de re définir carrément la class décorator :p en gros

Hors ligne

 

#17 10-03-2010 08:18:50

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Form] Comment éliminer les décorateurs

iop974 a écrit:

Sinon le 2eme tuto de mikaelkael préconise de re définir carrément la class décorator :p en gros

Mais, c'est juste pour t'expliquer le fonctionnement et ce que tu peux faire avec les décorateurs.


----
Gruiiik !

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