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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
{% render "SearchBundle:Default:request" %}
2. Mon objet searchRequest qui sera envoyé au 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
 
namespace KassApp\PublicBundles\SearchBundle\Entity;
 
class SearchRequest {
 
        private $request;
 
        public function getRequest() {
                return $this->request;
        }
 
        public function setRequest($request) {
                $this->request = $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
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(), ));
 
        }
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
 
<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 ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$request = $this->get('request');
J'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
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
A aucun moment je n'entre dans le if ($request->getMethod()=='POST') de ma methode requestAction().

J'espère que quelqu'un pourra m'aider car là je n'y arrive plus...
Merci!