Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Plop, je sais que ce composant n'est pas encore réécrit donc il serait à même d'évoluer.
J'ai donc un formulaire composé uniquement d'un élément Select qui va submit en javascript le formulaire lorsque la valeur du select change.
Ce composant prend pour valeur (via setValue($key)) une valeur stocker en session et est chargé via un tableau passé en paramètre. Lorsque je change de valeur le formulaire se soumet correctement, l'action que j'ai défini est bien appelée et la valeur en session est modifiée de façon à ce que le composant sélectionne toujours la bonne valeur.
Ce composant est disponible sur toutes mes pages et permet de modifier des informations d'affichages. Mon problème est lorsque j'appelle mon action forcément il va afficher la vue qui lui est liée.
Comment je peux faire en sorte de soumettre ce formulaire en appelant une action (ou autre chose si c'est possible) sans changer de page ?
Merci d'avance
Orkin
Hors ligne
Hello, j'ai résolu mon problème grâce aux événements de ZF2 cependant j'aimerai bien avoir un second avis tout de même afin de savoir ce que vous en pensez et/ou ce que vous auriez fait.
J'ai donc dans le constructeur de mon contrôleur générique ajouté un nouvel évent de type dispatch et je n'ai pas renseigné d'action à mon formulaire du coup il reste sur la même page et fait bien mon post.
Voici le code :
[lang=php] $this->events()->attach('dispatch', array($this, 'mamethode'), 'mapriorité'); // Est-ce bien l'event "dispatch" ?
[lang=php] public function mamethode($e) { $form = monForm(); $request = $this->getRequest(); if ($request->isPost()) { $formData = $request->post()->toArray(); if ($form->isValid($formData)) { $value = $form->getValue('value'); $storage = new \Zend\Session\Storage\SessionStorage(); $storage->setMetadata('mavaleur', $value); $sessionManager = new \Zend\Session\SessionManager(); $sessionManager->setStorage($storage); } } }
D'une part est ce bien l'événement "dispatch" ? Et est ce bien comme ça qu'il faut faire pour stocker en session une valeur sans casser la session "utilisateur" via AuthentificationService ?
Hors ligne
Bonjour,
J'aimerais te donner mon avis car je suis moi-même sur les formulaires (Beta5) mais j'ai un problème plus basique.
... je ne trouve pas l'élément select dans library\Zend\Form\Element.
Comment fais-tu une combo?
DojoToolkit?
Merci
Hors ligne
Bon ... autant pour moi
J'ai redescendu la dernière version avec GitHub et maintenant je vois l'élément select.
Par contre, je suis toujours intéressée par l'intégration Dojo.
J'utilise JQuery et je me demandait quel serait l'avantage de Dojo.
Déjà testé?
Hors ligne
Salut, désolé je n'avais pas vu ton message d'hier soir. Non je n'ai pas essayé d'y ajouter du javascript et pour être honnête je n'ai pas eu le temps ni la motivation de tout remigrer sur la beta5.
Je suis en cours donc j'espère avoir pas mal avancé ce soir. Pour ma part, avant la refonte des formulaires, j'ai fait ceci sur mon select :
[lang=php]$select->setAttrib('onchange', 'this.form.submit()')
Et c'était mon event qui prenait le relai sur chaque requêtes, l'inconvénient c'est que ça faisait un début de traitement pas forcément utile puisque même si ce n'était pas une requête déclenchée par l'élément "Select" ...
Maintenant il y a peut être moyen de faire mieux avec la refonte du formulaire. Bakura saura surement t'en dire plus (quand il passera) puisqu'il en est l'auteur.
Hors ligne
Merci pour l'info.
... effectivement, la migration beta4 vers beta5 réserve quelques surprises...
Comme mon appli est juste en proto, je suis repartie d'un squelette tout beau tout propre mais je rame pour mettre la traduction dans les formulaires.
Et je n'arrive pas vraiment à 'hydrater' de façon clean les combo via la base de donnée.
A suivre, donc
Hors ligne