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 ...