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:
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
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())); }
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 /** * @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"); }
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 {% 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 %}
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
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 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
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'; } }
rien de bien méchant, mais arrivé sur la vue j'ai ce message:
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 %}
- 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 ...
Partager