Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous !
Je débute avec Zend, et je me suis rendu compte qu'il était possible de récupérer les données d'un formulaire sans avoir cliqué sur son bouton Submit mais sur un simple lien vers une autre page.
S'agit-il d'un formulaire.submit() en JavaScript lancé automatiquement pour tous les liens contenus dans un formulaire par le Framework ?
Merci,
J-Zender.
Hors ligne
Bonjour,
L'envoi des formulaires via un lien se fait par du javascript. Le framework n'intervient pas à ce niveau.
Voici un léger exemple :
<form name="myForm" method="post" action="..."> <input type="text" name="test" id="test" /> <a href="maPageDAide.php">Aide</a> </form> <a href="#" onclick="document.myForm.submit();">Envoyer les données</a>
Ce genre de liens ne sont pas forcément contenus dans le formulaire. Si tu veux plus d'informations, je te conseille de consulter un site spécialisé dans le javascript.
Damien
Hors ligne
Merci Damien, mais ce qui m'étonne c'est qu'à aucun moment je n'utilise de JavaScript et que ça fonctionne quand même ! Mon lien est du type :
<a href="<?php echo $this->baseUrl; ?>/index/supprimer/id/8"></a>
(index pour IndexController et supprimer qui appelle supprimerAction() dans le contrôleur)
Je me demandais si Zend Framework transformait automatiquement dans un formulaire les liens sans JavaScript en lien avec. Quelqu'un a-t-il la réponse ?
Merci,
J-Zender.
Hors ligne
Tu confonds peut etre les parametres d'un formulaire et les parametre que l'on peut passer au controller
/module/controller/action/param1/value1/param2/value2 .... etc...
si tu as creer une regle de routage spécifique, tu peux meme changer cette facon de faire et obtnir par exemple
/module/controller/action/value1/value2/value3
Hors ligne
Oui peut-être Titerm, j'avoue que ce n'est pas encore très clair. Voici ce que j'ai compris :
Les paramètres que je peux passer au contrôleur sont de deux types :
- Par l'URL : dans ce cas, par défaut c'est du type :
/nom_du_contrôleur/nom_de_la_fonction/nom_du_parametre/valeur_du_parametre
Je le récupère dans mon contrôleur de la manière suivante :
$nom_du_parametre = $this->_request->getParam('nom_du_parametre', 0);
Question subsidiare : Comment fais-tu pour choisir une autre façon d'organiser l'URL ?
- Par les champs d'un formulaire : ils sont récupérés sous forme de variables en PHP.
Par exemple un <input type="text" name="toto"> dans ma page PHTML sera récupéré dans le contrôleur de la façon suivante :
$toto = $this->_request->getPost('toto');
Ce que je ne comprends pas :
La valeur du champ toto est postée même si je ne clique pas sur un bouton de type Submit du formulaire.
Dans mon cas je clique sur un lien vers /contrôleur/fonction/param1/valeur_param1 dans le formulaire qui contient par ailleurs un <input type="text" name="param2">
Et je suis capable dans le contrôleur de faire :
$param1 = $this->_request->getParam('param1', 0); (C'EST NORMAL)
$param2 = $this->_request->getPost('param2'); (C'EST ETONNANT !)
Ma question est donc : comment cela se fait-il que les données du formulaire soient postées alors que je n'ai pas cliqué sur mon bouton Submit ? La fonction JavaScript formulaire.submit() est-elle exécutée automatiquement ?
Par ailleurs, l'idée d'organiser l'URL autrement et avec plusieurs paramètres m'intéresse. Peux-tu m'en dire plus stp ?
Merci !
J-Zender.
Hors ligne
Pages: 1