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 :

problème avec un form -> "This form should not contain extra fields." [2.x]


Sujet :

Symfony PHP

  1. #1
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut problème avec un form -> "This form should not contain extra fields."
    Bonjour

    J'ai semble t il un problème avec un formulaire mais je ne trouve pas le pourquoi...

    j'accède à mon appli sur cette méthode:

    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
     
    /**
         * Vérifie l'identité de la personne connectée avec l'url
         * @param \Symfony\Component\HttpFoundation\Request $request
         * @return redirection
         */
        public function verifIdentiteAction(Request $request)
        {
            $session = $this->get('session');
            $user = $session->get('user');
     
            $form = $this->createForm(new Birthdate());
            $form->handleRequest($request);
     
            if ($form->isValid()) {
                $tabPostParam = $request->request->get("form");
                $wsContainer = $this->container->get('simsu_webservice.general');
                $userBiperId = $wsContainer->getBiperUserIdFromNameBirthdate($user->getFirstname(), $user->getLastname(), $tabPostParam['birthdate']);
                //Si on a un retour positif de Biper |-> Vérification des chartes signées
                if ($userBiperId > 0){
                    return $this->forward('SimsuPasswordModifyBundle:Default:signatureCharte');
                }
                //sinon on renvoie vers la vérification de l'url avec un message d'erreur
                else { 
                    $session->getFlashBag()->add('notice', "La vérification de votre identité a échouée.");  
                    return $this->redirect($this->generateUrl('simsu_password_modify_url',array('url' => $session->get('url'))));    
                }
            }
            return $this->render('SimsuPasswordModifyBundle:Default:index.html.twig', array('user' => $user,'form' => $form->createView()));
        }
    j'ai son builform correspondant:

    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
     
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         * @param int $isUnivService
         */
        public function buildForm(FormBuilderInterface $builder, array $options = array())
        {
            $builder->add("birthdate", "datetime", 
                [ "widget" => "single_text","input" => "datetime", 
                "format" => "yyyy-mm-dd", "attr" => array("class" => "date"),
                "label"=>'Birthdate',"constraints" => [ new Date() ],]);
            $builder->add('captcha', 'captcha', array(
                        'width' => 200,
                        'height' => 50,
                        'length' => 6,
                        'label' => ' ',
                        'invalid_message' => "Le code n'est pas correcte, recommencer",
                        'reload' => true,
                        'as_url' => true,
                    ));
            $builder->add("Valider", "submit");
        }
    et son twig:

    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
     
    {% block body %}
        <script type="text/javascript" src="{{ asset("bundles/simsupasswordrecovery/js/jquery/js/jquery-1.10.2.js") }}" ></script>
        <script type="text/javascript" src="{{ asset("bundles/simsupasswordrecovery/js/jquery/js/jquery-ui-1.10.4.js") }}" ></script>
        <script type="text/javascript" src="{{ asset("bundles/simsupasswordrecovery/js/jquery/development-bundle/ui/i18n/jquery-ui-i18n.js") }}" ></script>
        <link href="{{ asset("bundles/simsupasswordrecovery/js/jquery/css/ui-lightness/jquery-ui-1.10.4.css") }}" rel="stylesheet">
    {% for flashMessage in app.session.flashbag.get('notice') %}
        <div class="alert-error">
            {{ flashMessage }}
        </div>
    {% endfor %}
     
    <h1>Vérification de l'indentité</h1>
    Bonjour {{ user.lastname }} {{ user.firstname }}.<br>
     
    Veuillez entrer votre date de naissance:<br><br>
     
    {{ form(form) }}
     
    <script type="text/javascript">
        $(function()
        {
            $.datepicker.setDefaults($.datepicker.regional['{{ app.request.locale }}']);
            $("#Birthdate_birthdate").datepicker({ dateFormat: "yy-mm-dd", changeYear: true, changeMonth: true, yearRange: "-100:"  });
        });
    </script>
    {% endblock %}
    Jusque la tout va bien, lorsque l'utilisateur soumet le formulaire il sera redirigé vers la méthode suivante (après validation bien sur):

    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
     
        /**
         * Vérifie les chartes à signer, récupère la signature
         * @param String $login
         * @return redirection
         */
        public function signatureCharteAction(Request $request)
        {
            $session = $this->get('session');
            $user = $session->get('user');
            $wsContainer = $this->container->get('simsu_webservice.general');
            $chartes = $wsContainer->getCharteNonSigne($user->getUsername());
     
            if($chartes){
                foreach($chartes as $charte){$wsContainer->getCharte($charte);} // A voir si on ne récupère pas directement l'intégralité des chartes 
                $session->set('chartes',$chartes);
                $form = $this->createForm(new Charte(),null,array(
                'action' => $this->generateUrl('simsu_password_modify_signature_charte'),));
     
                $form->handleRequest($request);
                if ($form->isValid()) {
                    //----> enregistrement de la signature des chartes
                    $validation = true;
                    foreach($chartes as $charte){
                        if(!$wsContainer->signatureCharte($charte, $user)){
                            $validation = false;
                        }
                    }
                    if($validation){ // si tout c'est bien passé
                        return $this->forward('SimsuPasswordModifyBundle:Default:modificationMDP');
                    }
                    // sinon .... ? on log ? on arrête l'utilisateur? 
                    else{
                        $session->getFlashBag()->add('notice', "La signature des chartes a échouée.");
                        return $this->render('SimsuPasswordModifyBundle:Default:notice.html.twig');
                    }
                    // ici il faudra envoyer vers le package d'accueil
                    return $this->forward('SimsuPasswordModifyBundle:Default:modificationMDP');
                }
                return $this->render('SimsuPasswordModifyBundle:Default:charte.html.twig', 
                    array('chartes' => $chartes,'form' => $form->createView()));  
            }
            else{ 
                // ici il faudra envoyer vers le package d'accueil
                // si il n'y a pas de charte à signer on passe à la modification de mdp
                $session->set('chartes',NULL);
                return $this->forward('SimsuPasswordModifyBundle:Default:modificationMDP');
            }
        }
    son buildform:

    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
     
    <?php
     
    namespace Simsu\UnivUserBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
     
    class Charte extends AbstractType
    {
     
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         * @param int $isUnivService
         */
        public function buildForm(FormBuilderInterface $builder, array $options = array())
        {
            //$builder->setAction($this->generateUrl('simsu_password_modify_signature_charte'));
            $builder->add('Signer', "submit");
        }
     
        /**
         * Name of the form to use to get datas with $request->request->get("NameBirthdate")
         * @return string
         */
        public function getName()
        {
            return 'Birthdate';
        }
    }
    son twig:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    {% block body %}
        <h1>Signature des Chartes</h1>
        {% for charte in chartes %}
            {{ charte.libelle }} <br>
            {{ charte.text }}<br><br>
        {% endfor %}
     
    {{ form(form) }}
    {% endblock %}
    rien de bien méchant, mais arrivé sur la vue j'ai ce message:


    • This form should not contain extra fields.


    tout fonctionne ceci dit, mon formulaire de signature aussi etc...

    j'ai essayé de virer au max des -> add dans mes formulaires mais toujours pareil...

    J'ai cherché cette erreur, a chaque fois cela tourne autour de collection ou de entity.

    Perso je n'ai pas de class derrière mes form ...

  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
    j'sais pas peut être bin le form_rest qui manque , qu'est ce t'en pinse ?

  3. #3
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Merci pour cette réponse mais cela ne fonctionne pas plus.

    J'ai utilisé form(form) qui me semble t il fait déjà tout le boulot...

    J'ai tout de même suivit ton conseil en rajoutant avant et/ou après le form(form).

    Cela ne fonctionnait pas par contre je me suis dit que j'allais affichier manuellement le formulaire donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    {{ form_start(form) }}
    {{ form_end(form) }}
    et la ça fonctionne ... pige pas trop mais si ça marche comme ça et bien je garde

    merci

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

Discussions similaires

  1. Problème avec une somme et mise en forme
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/02/2013, 13h29
  2. [2.x] [Form] This form should not contain extra fields
    Par montis dans le forum Symfony
    Réponses: 4
    Dernier message: 17/09/2012, 15h40
  3. problème avec Joomla 1.5 et CK Forms
    Par Soundboy39 dans le forum 1&1
    Réponses: 0
    Dernier message: 07/09/2011, 21h53
  4. problèmes avec plusieurs TQuery sur un même Form
    Par tomguiss dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/01/2008, 12h22
  5. problème avec bloc détail de type tabulaire(forms)
    Par med_anis_dk dans le forum Forms
    Réponses: 3
    Dernier message: 01/06/2006, 21h16

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