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 :

passer une méthode PUT pour edition de formulaire


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut passer une méthode PUT pour edition de formulaire
    Bonjour, j'essaie vainement de changer la méthode pour l'envoie d'un fomulaire
    À l'origine j'ai:
    Code php : 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
     
    /**
         * @Route("/pin/{id<[0-9]+>}/edit", name="app_pin_edit", methods={"GET", "POST"})
         */
        public function edit(Request $request, Pin $pin, EntityManagerInterface $em): Response
        {
            $form = $this->createForm(PinType::class, $pin);
     
            $form->handleRequest($request);
     
            if($form->isSubmitted() && $form->isValid()) {
                $em->flush($pin);
                return $this->redirectToRoute('app_home');
            }
     
            return $this->render('pins/edit.html.twig', [
                "pin" => $pin,
                "editForm" => $form->createView()
            ]);
        }

    et tout fonctionne parfaitement , mais si je veux changer la methode : PUT
    je fais
    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
     
    /**
         * @Route("/pin/{id<[0-9]+>}/edit", name="app_pin_edit", methods={"GET", "PUT"})
         */
        public function edit(Request $request, Pin $pin, EntityManagerInterface $em): Response
        {
            $form = $this->createForm(PinType::class, $pin, [
                'method' => 'PUT',
            ]);
     
            $form->handleRequest($request);
     
            if($form->isSubmitted() && $form->isValid()) {
                $em->flush($pin);
                return $this->redirectToRoute('app_home');
            }
     
            return $this->render('pins/edit.html.twig', [
                "pin" => $pin,
                "editForm" => $form->createView()
            ]);
        }
    j'ai une erreur:
    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    No route found for "POST https://127.0.0.1:8001/pin/13/edit": Method Not Allowed (Allow: GET, PUT)

    J'aurai oublié ( voire pas compris : plus probable ) quelque chose ?
    pourtant , j'ai bien
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" name="_method" value="PUT">
    Dans le HTML de la page...

  2. #2
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Bonjour,

    Peut-être vérifier que la directive http_method_override est bien activée dans la configuration du projet : https://symfony.com/doc/current/refe...ethod-override

    Bonne journée,

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut
    J'avoue, j'ai du mal à savoir où il faudrait changer quelque chose! ( je comprends bien qu'il faut peut-être changer mais c'est tout...)
    mon niveau est encore débutant !!!

    Après , je me contenterai de POST et GET, mais j'aimerais bien trouver un moyen de faire comme il faut .

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut
    Je crois que j'ai trouvé:

    où: vendor>symfony>http-foundation>Request.php> vers la ligne 82 ( pour moi ! ) j'ai changé en true
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    protected static $httpMethodParameterOverride = true;

    Je me suis aidé de ça !

    pour l'instant , je n'ai plus d'erreurs ( je vais vérifier quand j'aurai le temps pour la méthode DELETE )

  5. #5
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Il s'agit effectivement de ce paramètre dans la classe Request de Symfony.

    Néanmoins, modifier le code source de Symfony est une très mauvaise idée : si tu réinstalles et met à jour les dépendances de ton projet avec composer, ces modifications seront perdus et ton application ne fonctionnera plus comme tu le souhaites.
    Il ne faut jamais faire de modification dans les fichiers du dossier vendor de ton projet.

    Idéalement, tu dois modifier ce paramètre dans la configuration de ton projet : https://symfony.com/doc/current/configuration.html

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut
    Je veux bien changer dans la configuration, mais là j'avoue que je pêche un peu: je ne sais pas où !
    config > services.yaml > parameters ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Pour en savoir plus sur les configurations disponibles, tu peux consulter la page Symfony Reference https://symfony.com/doc/current/reference/index.html ou exécuter la commande php bin/console config:dump-reference dans ton projet.

    http_method_override est une configuration du framework (FrameworkBundle), fichier config/packages/framework.yaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # see https://symfony.com/doc/current/reference/configuration/framework.html
    framework:
        http_method_override: true

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/03/2008, 21h43
  2. [POO] passer une méthode en argument
    Par gorgonite dans le forum Langage
    Réponses: 4
    Dernier message: 09/11/2007, 18h56
  3. Réponses: 1
    Dernier message: 24/10/2007, 11h01
  4. [VS 2005][C#] Une seule icone pour tous les formulaires.
    Par Gold.strike dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/09/2006, 14h56
  5. Réponses: 3
    Dernier message: 13/06/2006, 14h52

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