Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-01-2016 09:40:50

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Changer l'ordre des input d'un formulaire après son initialisation

Bonjour à tous,

aujourd'hui, j'ai une question un peu simple mais je n'arrive pas à trouver d'exemples ou de solutions...

Globalement, j'ai un form générique qui me sert de filtre de recherche au niveau de certaines vues (principalement des listing). Au niveau de certaines actions, je supprime ou rajoute des input pour faire correspondre ce "filtre" à la vue et aux colonnes présentes.

Ce que je souhaite faire, c'est réorganiser l'ordre de ces filtres "à la volée". Je sais qu'il est possible d'ajouter une priorité aux input au niveau du constructeur de ceux-ci mais c'est pas vraiment l'idéal lorsque j'ajoute un nouvel input ou que je doive réorganiser les inputs déjà présents dans ce formulaire (exemple mettre l'input B avant le A).

Sous ZF1, il y avait une méthode "setOrder" qui faisait ce travail là mais je n'ai pas trouvé d'équivalent sous ZF2 et j'ai comme un doute sur le fait que cela existe...

Avez vous une solution à me proposer ?
Merci d'avance,
Romain

Hors ligne

 

#2 21-01-2016 10:01:35

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Changer l'ordre des input d'un formulaire après son initialisation

Hello,

Honnêtement j'ai pas la réponse ^^
Du coup je viens voir si tu l'a trouvé big_smile

Les view helper devrait suffire à réorganiser tes forms mais bon.. c'est pas à la volée hein... ^^

Hors ligne

 

#3 21-01-2016 10:13:14

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Re: Changer l'ordre des input d'un formulaire après son initialisation

Hello,

je n'ai toujours pas trouvé la réponse, mais je cherche toujours une solution...

J'avais effectivement pensé au viewHelpers. Si je ne trouve pas de solution, je me tournerais vers ça mais cest pas l'idéal dans mon cas...

Hors ligne

 

#4 21-01-2016 10:17:43

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Changer l'ordre des input d'un formulaire après son initialisation

Le but des viewHelper sur les formulaires est de pouvoir les organiser différement ^^

Après, a tu vraiment un intérêt de ne pas distinguer tes formulaires?
Même si ce sont des formulaires de filtre, n'aurait-tu pas intérêt de faire un "ComonFilterForm" qui générerait tes champs commun puis plusieurs autres forms qui eux seraient tes fonctionnalités distinctes et auraient en parent ton comon?

Dernière modification par flobrflo (21-01-2016 10:18:14)

Hors ligne

 

#5 21-01-2016 11:20:15

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Re: Changer l'ordre des input d'un formulaire après son initialisation

L'intérêt d'avoir un seul formulaire dans mon cas, c'est qu'il contient des champs qui se retrouvent sur la plupart des vues où il est utilisé. Par contre dans certaines d'entre-elles, je rajoute ou supprime certains input spécifiques à ces vues.
Si je commence à multiplier les formulaires, ça va vraiment être la galère...

Hors ligne

 

#6 21-01-2016 11:59:28

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Changer l'ordre des input d'un formulaire après son initialisation

Okay smile

Comment est ce que tu supprime et ajoute tes inputs dans tes vues?

Hors ligne

 

#7 21-01-2016 13:27:43

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Re: Changer l'ordre des input d'un formulaire après son initialisation

Je les ajoute/supprime au niveau de mon controller.
Concrètement, au niveau de mon action, j'appelle une fonction générique qui charge mon formulaire de filtres et qui le stocke dans une variable.
Ensuite, j'ajoute ou je supprime des inputs en utilisant les méthodes propres à la classe Form, c'est à dire add() ou remove().

Je sais que la méthode add() peux prendre un "flag" en deuxième paramètre qui permet d'indiquer la priorité de cet input (et que j'utilise dans certains cas).
Ce que j'aimerais pouvoir faire, c'est pouvoir modifier cette priorité au niveau des inputs du formulaire Filters que je charge précédemment !

Au niveau de mes vues, je fait juste quelque chose du style :

Code:

[lang=php]
$form = $this->form;
$form->setAttribute('action', $action)->setAttributes(array('style' => 'display:inline', 'id' => 'additionalParams'));
$form->prepare();        
echo $this->form)->openTag($form);
echo $this->form($form);
echo $this->form()->closeTag();

Dernière modification par RomainG (21-01-2016 13:29:55)

Hors ligne

 

#8 29-01-2016 13:22:29

RomainG
Membre
Date d'inscription: 10-06-2015
Messages: 65

Re: Changer l'ordre des input d'un formulaire après son initialisation

Bonjour à tous,

j'ai finalement résolu ce problème en fouillant une fois de plus dans le code source.

En fait, il existe une méthode 'setPriority()'  de la classe 'Zend\Form\Fieldset'.

Il suffit juste de faire ceci :

Code:

[lang=php]
$form->setPriority('nom du champ ou du fieldset', (int)ordre);

Hors ligne

 

#9 29-01-2016 14:22:55

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: Changer l'ordre des input d'un formulaire après son initialisation

Bonjour,

Merci pour ton retour, c'est en effet très utile.


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

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