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