Bonjour à tous,
J'ai un problème très bizarre. J'ai créé un formulaire, mais le problème est que dans mon Action Controller lorsque je teste ma requete si elle est bien du type POST, je n'entre jamais dans la boucle, car ça reste en GET.
Je veux créer un moteur de recherche visible sur toutes mes pages.
1. Ajout de mon formulaire a mon layout principal:
2. Mon objet searchRequest qui sera envoyé au formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {% render "SearchBundle:Default:request" %}
3. requestAction() du Controller de mon bundle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 namespace KassApp\PublicBundles\SearchBundle\Entity; class SearchRequest { private $request; public function getRequest() { return $this->request; } public function setRequest($request) { $this->request = $request; } }
4. le fichier searchform.html.twig qui affiche le formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public function requestAction() { $searchRequest = new SearchRequest(); $formbuilder = $this->createFormBuilder($searchRequest); $formbuilder->add('request', 'text'); // request est ici le nom du champs de l'objet SearchRequest $form = $formbuilder->getForm(); $request = $this->get('request'); if($request->getMethod() == 'POST') { $form->bindRequest($request); if($form->isValid()) { // Effectuer les recherches dans la BDD } } return $this->render('SearchBundle:Default:searchform.html.twig', array( 'form' => $form->createView(), )); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <form action="{{ path('SearchBundle_results') }}" method='POST' {{ form_enctype(form) }}> {{ form_label(form.request, "Rechercher") }} {{ form_errors(form.request) }} {{ form_widget(form.request) }} {{ form_rest(form) }} <input type="submit" /> </form>
Dans la methode request action après la ligneJ'ai fais un affichage du résultat, et voici ce que cela me retourne après avoir entré "voiture" dans mon formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $request = $this->get('request');
A aucun moment je n'entre dans le if ($request->getMethod()=='POST') de ma methode requestAction().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 GET /MonApp/web/app_dev.php/searchresults HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Connection: keep-alive Content-Length: 83 Content-Type: application/x-www-form-urlencoded Cookie: __utma=111872281.1338910243.1341915209.1342830953.1343866004.4; __utmz=111872281.1341915209.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=344c2e593b0daee579a9faf488b59228 Host: localhost:8888 Referer: http://localhost:8888/MonApp/web/app_dev.php/searchresults User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0 X-Php-Ob-Level: 1 form%5Brequest%5D=voiture&form%5B_token%5D=c6ad825b124baf5a4d817e2eb16410a31e0cfde6
J'espère que quelqu'un pourra m'aider car là je n'y arrive plus...
Merci!
Partager