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 :

Symfony2 Probleme de validation de dates dans formulaire. [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 52
    Points
    52
    Par défaut Symfony2 Probleme de validation de dates dans formulaire.
    Bonjour,

    J'ai beau tourner le probleme dans tous les sens, je ne trouve pas la solution.
    Voila, j'ai construit un formulaire avec des entities, formType etc, le formulaire est bien en place, les champs fonctionnent etc.

    Au moment de la validation, j'ai bien mis dans mon controller :
    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
    26
    27
    28
    29
    30
    31
    public function ajouterAction()
        {
            $OffenderForm = new OffenderForm();
            $OffenderForm->setDateDelit(date('Y-m-d'));
            $OffenderForm->setRefFiche(date('Y-m-d-Hi'));
     
            $form = $this->createForm(new OffenderFormType(), $OffenderForm);
     
            $request = $this->get('request');
            $form->handleRequest($request);
     
            if ($request->getMethod() == 'POST'){
                if ($form->isValid()) {
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($OffenderForm);
                    $em->flush();
     
                    // On redirige vers la page de visualisation du client nouvellement créé
                    return $this->redirect($this->generateUrl('formulaire_fiche_client', array('id' => $OffenderForm->getIdForm())));
                }
                    /*print_r($OffenderForm);
                    exit();*/
                return $this->render('FormulaireBundle:Formulaire:ajouter.html.twig', array(
                    'form' => $form->createView(),
                ));
            }
     
            return $this->render('FormulaireBundle:Formulaire:ajouter.html.twig', array(
                'form' => $form->createView(),
            ));
        }
    mais il ne passe jamais dedans. (test avec print_r de mon objet suivi d'un exit.)
    et quand je vais dans le panel de symfony pour voir l'erreur il me dit :
    Le jeton CSRF est invalide. Veuillez renvoyer le formulaire.
    Toutes données sont bien enregistrées dans l'objet mais rien ne passe en base de données.
    En général cette erreur c'est il me semble par ce qu'il manque des variables à enregistrer mais quand je remplis tous les champs ca ne me valide quand meme pas mon formulaire ne passe jamais dans la partie "isValid" et donc ne l'enregistre pas...

    Si une bonne âme avait une opinion

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    yéééé man rastafariiiiiiiiiiiiiii,



    tu as peut etre oubli le form_rest(form) dans ta vue.

    le form_rest permet d'inclure le champs CRSF et les autres champs hidden eventuel

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Merci à toi pour la réponse rapide. je l'avais mis a un moment mais cela ne changeait rien, je l'avais alors enlevé.
    Maintenant le problème premier que j'avais est revenu au niveau de l'enregistrement de mes dates...

    Voici l'erreur :
    Error: Call to a member function format() on a non-object in C:\wamp\www\Yannick_Form\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\DateType.php line 53
    Voici les différents codes des entités, type et le controller en n'affichant que les champs avec des dates évidement pour pas faire des km
    Pr&cision, tous ces codes sont générés auto avec symfony... donc c'est pour cela que je ne comprends pas le problème.
    Entity :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
        /**
         * @var \DateTime
         *
         * @ORM\Column(name="date_delit", type="date", nullable=false)
         */
        private $dateDelit;
     
        /**
         * @var \DateTime
         *
         * @ORM\Column(name="date_naiss", type="date", nullable=true)
         */
        private $dateNaiss;
     
        /**
         * @var \DateTime
         *
         * @ORM\Column(name="date_recidive", type="date", nullable=true)
         */
        private $dateRecidive;
     
        /**
         * @var \DateTime
         *
         * @ORM\Column(name="heure_entrave", type="time", nullable=true)
         */
        private $heureEntrave;
     
        /**
         * Set dateDelit
         *
         * @param \DateTime $dateDelit
         * @return OffenderForm
         */
        public function setDateDelit($dateDelit)
        {
            $this->dateDelit = $dateDelit;
     
            return $this;
        }
     
        /**
         * Get dateDelit
         *
         * @return \DateTime 
         */
        public function getDateDelit()
        {
            return $this->dateDelit;
        }
     
        /**
         * Set dateNaiss
         *
         * @param \DateTime $dateNaiss
         * @return OffenderForm
         */
        public function setDateNaiss($dateNaiss)
        {
            $this->dateNaiss = $dateNaiss;
     
            return $this;
        }
     
        /**
         * Get dateNaiss
         *
         * @return \DateTime 
         */
        public function getDateNaiss()
        {
            return $this->dateNaiss;
        }
     
        /**
         * Set dateRecidive
         *
         * @param \DateTime $dateRecidive
         * @return OffenderForm
         */
        public function setDateRecidive($dateRecidive)
        {
            $this->dateRecidive = $dateRecidive;
     
            return $this;
        }
     
        /**
         * Get dateRecidive
         *
         * @return \DateTime 
         */
        public function getDateRecidive()
        {
            return $this->dateRecidive;
        }
     
        /**
         * Set heureEntrave
         *
         * @param \DateTime $heureEntrave
         * @return OffenderForm
         */
        public function setHeureEntrave($heureEntrave)
        {
            $this->heureEntrave = $heureEntrave;
     
            return $this;
        }
     
        /**
         * Get heureEntrave
         *
         * @return \DateTime 
         */
        public function getHeureEntrave()
        {
            return $this->heureEntrave;
        }
    Type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
               ...
                ->add('dateNaiss', 'birthday', array('years' => range(date('Y'), date('Y') - 120)))
               ...
                ->add('dateRecidive', 'date')
               ...
                ->add('heureEntrave', 'time')
               ...
            ;
        }
    Note : Je set directement la dateDelit dans le controller c'est pour cela que je ne l'affiche pas dans le builder.

    Controller :
    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
    26
    27
    28
    29
    30
    31
     
    public function ajouterAction()
        {
            $OffenderForm = new OffenderForm();
     
            $OffenderForm->setDateDelit(date('Y-m-d'));
            $OffenderForm->setRefFiche(date('Y-m-d-Hi'));
     
            $form = $this->createForm(new OffenderFormType(), $OffenderForm);
     
            $request = $this->get('request');
            $form->handleRequest($request);
     
            if ($request->getMethod() == 'POST'){
                if ($form->isValid()) {
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($OffenderForm);
                    $em->flush();
     
                    // On redirige vers la page de visualisation du client nouvellement créé
                    return $this->redirect($this->generateUrl('formulaire_fiche_client', array('id' => $OffenderForm->getIdForm())));
                }
                return $this->render('FormulaireBundle:Formulaire:ajouter.html.twig', array(
                    'form' => $form->createView(),
                ));
            }
     
            return $this->render('FormulaireBundle:Formulaire:ajouter.html.twig', array(
                'form' => $form->createView(),
            ));
        }
    Merci d'avance.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Je me trompe peux être mais ne faut t'il pas donner une valeur de format au type date : http://symfony.com/fr/doc/current/re...te.html#format

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Merci de la réponse mais non, cela ne résout rien. Même erreur
    D'après ce que je comprends c'est que les champs date et du meme type sont transformés en string pour les inclure en bdd et c'est la que ca coince. mais après je ne sais pas où et en retournant le probleme ou testant, je n'y arrive pas. :'(

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    pas la peine d'ecrire (y-m-d) ...
    voila mon code , juste lors de l'affichage de form il affiche la date du jour (entités article et actualité) github.com

  7. #7
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Bonjour et merci de ton aide.

    Cependant, un new datetime() ne change pas mon probleme. ca enregistrera un champ, mais il en reste 3 a remplir. (anniv,et les 2 autres.)
    et ce sont eux qui bloquent...

    Sniff, une autre proposition?

  8. #8
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Affaire résolue.

    En effet, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function __construct() {
            $this->date = new \Datetime();
        }
    Pour la première date fait le job. Bizarrement cela n'avait pas marché les premières fois mais je n'avais pas rechangé les modifications autres que j'avais faites...

    Merci de l'aide toujours aussi précieuse sur ce forum

    Je change en résolu.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/07/2009, 18h41
  2. Date Dans Formulaire
    Par FIFI33160 dans le forum Access
    Réponses: 1
    Dernier message: 12/07/2006, 22h08
  3. Date Dans Formulaire
    Par FIFI33160 dans le forum Access
    Réponses: 1
    Dernier message: 12/07/2006, 16h19
  4. Saisie automatique de dates dans formulaires
    Par yves89 dans le forum IHM
    Réponses: 11
    Dernier message: 17/05/2006, 00h04
  5. probleme bouton radio avec onChange dans formulaire
    Par wil4linux dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2005, 11h26

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