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 :

csrf token: Required


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut csrf token: Required
    csrf token: Required.

    Bonjour,
    J'ai fini le tutoriel Jobeet et j'essaie de me lancer dans une exploration moins balisée des possibilités de symfony.
    Tout a bien commencé jursqu'à ce que j'essaie de mettre un formulaire/filtre dans mon projet.
    L'idée est de mettre un formulaire de saisie de paramètres pour lancer une recherche.
    J'ai donc généré les filtres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    symfony doctrine:build-filters
    J'ai adapté mon formFilter.class.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class TirfFormFilter extends BaseTirfFormFilter
    {
      public function configure()
      {
        $this->useFields(array('tirf_lib'));
     
        $this->widgetSchema->setLabels(array(
          'tirf_lib'    => 'Libellé'
        ));
      }
    }

    J'ai intégré mon formulaire dans mon template
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <form action="<?php echo url_for('tirf/') ?>" method="post" <?php $tirfFormFilter->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
      <table>
        <?php echo $tirfFormFilter ?>
        <tr>
          <td colspan="2">
            <?php echo $tirfFormFilter->renderHiddenFields() ?>
            &nbsp;<a href="<?php echo url_for('tirf/') ?>">Cancel</a>
            <input type="submit" value="Search" />
          </td>
        </tr>
      </table>
    </form>
    et j'ai modifié l'action en conséquence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      public function executeIndex(sfWebRequest $request)
      {
        $this->tirfs = Doctrine::getTable('Tirf')->retrieveTirfsFromTypes(sfConfig::get('mod_tirf_types_to_select'));
        $this->tirfFormFilter = new TirfFormFilter();
        echo ($this->tirfFormFilter->getName());
        $this->tirfFormFilter->bind($request->getParameter($this->tirfFormFilter->getName()));
        if ($this->tirfFormFilter->isValid()) {
          $query = $this->tirfFormFilter->buildQuery($this->tirfFormFilter->getValues());
          $this->tirfs = $query->execute();
        }
    Malheureusement, lors de l'exécution, j'ai un "csrf token: Required." qui s'affiche sur ma page.
    J'ai cherché et trouvé quelques posts relatifs à des problèmes similaires mais, malgré cela, je ne parviens pas à faire fonctionner mon formulaire sans que l'erreur s'affiche.
    Si quelqu'un réussit à identifier le problème, cela m'aiderait bien.

    D'avance merci.

  2. #2
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut
    Finalement, j'ai trouvé la solution...
    La voici pour ceux que ça intéresse.
    Ca se passe dans le action.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      public function executeIndex(sfWebRequest $request)
      {
        $this->tirfFormFilter = new TirfFormFilter();
        if($request->getParameter($this->tirfFormFilter->getName())){ # Pour être sûr qu'on exécute cette partie après un SUBMIT
          $this->tirfFormFilter->bind($request->getParameter($this->tirfFormFilter->getName()));
          if ($this->tirfFormFilter->isValid()) {
            $query = $this->tirfFormFilter->buildQuery($this->tirfFormFilter->getValues());
            $this->tirfs = Doctrine::getTable('Tirf')->retrieveTirfsFromTypes($query, sfConfig::get('mod_tirf_types_to_select'));
          }
        } else {
          $this->tirfs = Doctrine::getTable('Tirf')->retrieveTirfsFromTypes(null, sfConfig::get('mod_tirf_types_to_select'));
        }
      }

  3. #3
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu dois pouvoir faire plus simple encore en utilisant un formulaire basé sur sfFormDoctrine.

Discussions similaires

  1. [1.x] csrf token: Required. et admin generator
    Par jejeman dans le forum Symfony
    Réponses: 7
    Dernier message: 16/02/2012, 22h04
  2. [1.x] Admin generator csrf token: Required.
    Par shakly dans le forum Symfony
    Réponses: 5
    Dernier message: 17/09/2011, 12h07
  3. [1.x] symfony csrf token: Required.
    Par benhsaien dans le forum Débuter
    Réponses: 4
    Dernier message: 14/06/2011, 15h59
  4. [1.x] csrf token: Required
    Par PinGu- dans le forum Symfony
    Réponses: 8
    Dernier message: 14/01/2011, 00h08
  5. [1.x] csrf token required : erreur dans le modèle ?
    Par cli16 dans le forum Symfony
    Réponses: 3
    Dernier message: 27/04/2010, 13h43

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