IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Formulaire n'utilisant pas la méthode POST [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut Formulaire n'utilisant pas la méthode POST
    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!

  2. #2
    Membre éprouvé Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Par défaut
    Essaye de mettre des doubles quote dans ta balise forme
    Je dis peut être des conneries mais pour les attributs HTML il me semble que ca marche pas avec des simples quotes.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Merci Avrel pour ta réponse, mais malheureusement ça ne marche toujours pas.
    Pourtant quand on regarde la requête ça a l'air de pas trop mal passer, car si pour tester je met dans mon formulaire par exemple method="GET", la requeste sera bien diff.

    1. Recherche du mot "VOITURE" avec methode="GET"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GET /MonApp/web/app_dev.php/searchresults?form%5Brequest%5D=VOITURE&form%5B_token%5D=c6ad825b124baf5a4d817e2eb16410a31e0cfde6 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 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/home 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

    2. Recherche du mot "VOITURE" avec methode="POST"
    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

  4. #4
    Membre éprouvé Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Par défaut
    Et en modifiant
    par
    Dans ton controlleur ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Malheureusement non plus...
    C'est vraiment incompréhensible! Partout ou je regarde la syntaxe est comme la mienne. Le pire c'est que la valeur du formulaire je la reçois, mais la methode reste en GET.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Par défaut
    ou alors dans la route de l'entité correspondante en YAML
    //Resources/routing/entity.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    taRoute_xxx:
        pattern:  /xxxxx
        defaults: { _controller: "XxXxxBundle:xxxxxx:xxxxxx" }
        requirements:
            _method: POST|GET
    //Resources/routing.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tonBundle_entity:
        resource: "routing/entity.yml"
        prefix: /taRoute

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. forcer l'utilisation de la méthode POST <h:form..
    Par ii.abbassi dans le forum JSF
    Réponses: 18
    Dernier message: 17/08/2010, 16h59
  2. [MVC] Formulaire ne passant pas la méthode onSubmit
    Par la_praline dans le forum Spring Web
    Réponses: 1
    Dernier message: 04/08/2010, 16h40
  3. Plusieurs formulaires dans un fichier avec plusieurs méthodes post
    Par cyberdevelopment dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2006, 15h04
  4. Réponses: 1
    Dernier message: 15/05/2006, 18h05
  5. Formulaire utilisant la méthode POST + popup
    Par Hell dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 27/10/2004, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo