Symfony 2, Ce formulaire ne doit pas contenir de champs supplémentaires
J'ai créé un formulaire à l'aide de formBuilder
dans Symfony. J'ai ajouter un peu de style de base pour les entrées d'un formulaire à l'aide d'une feuille de style externe et faisant référence à l'id de balise. Le formulaire s'affiche correctement et traite les informations correctement.
Cependant, il génère un indésirable liste non ordonnée avec un élément de la liste contenant le texte suivant: This form should not contain extra fields.
Je vais avoir bien du mal à se débarrasser de cet avis. Je me demandais si quelqu'un peut m'aider à comprendre pourquoi il rendu avec mon formulaire et comment le supprimer?
Merci beaucoup d'avance!
Contrôleur
$form = $this->createFormBuilder($search)
->add('searchinput', 'text', array('label'=>false, 'required' =>false))
->add('search', 'submit')
->getForm();
$form->handleRequest($request);
Brindille de Sortie (formulaire est retournée et traitées correctement
This form should not contain extra fields.
Rendu HTML
<form method="post" action="">
<div id="form">
<ul>
<li>This form should not contain extra fields.</li>
</ul>
<div>
<input type="text" id="form_searchinput" name="form[searchinput]" />
</div>
<div>
<button type="submit" id="form_search" name="form[search]">Search</button>
</div>
<input type="hidden" id="form__token" name="form[_token]" value="bb342d7ef928e984713d8cf3eda9a63440f973f2" />
</div>
</form>
OriginalL'auteur AnchovyLegend | 2013-10-06
Vous devez vous connecter pour publier un commentaire.
Il me semble que vous avez le problème en raison de l'jeton de champ. Si c'est le cas, essayez d'ajouter des options à createFormBuilder():
Pour trouver le champ supplémentaire utiliser ce code dans le contrôleur, lorsque vous obtenez la requête:
Je ne sais pas ce domaine est de plus dans votre cas, vous pouvez très simplement. Champs supplémentaires signifient que, dans la demande, il y a certains domaines qu'il n'y a pas de générateur de formulaire. Et donc la forme de la liaison fait cette erreur. Peut-être par défaut jeton de champ n'est pas ajouté dans le générateur de formulaire, de sorte que vous pouvez spécifier explicitement par l'ajout d'options de générateur de formulaire que je vous ai écrit dans la réponse.
Le jeton de champ est généré sous la protection CSRF (voir symfony.com/doc/current/book/forms.html#csrf-protection) Cela est intégré dans Sf2 et est presque certainement pas la cause de l'erreur. Plus probable que vous avez codé en dur certains champ caché dans votre modèle de formulaire et que le terrain ne fait pas partie de l'objet de liaison.
Greate code pour voir les champs supplémentaires. Merci!
Il existe une méthode appelée
getExtraData()
à symfonyFormInterface
qui pourrait les aider.OriginalL'auteur nni6
Ce message est également possible si vous avez ajouté/modifié champs dans votre createFormBuilder() et appuyez sur actualiser dans votre navigateur...
Dans ce cas c'est ok après l'envoi du formulaire à nouveau 😉
OriginalL'auteur PBR
J'ai eu le même message tout en ayant plusieurs formulaires sur la même page. S'avère, symfony utilise par défaut le nom de "forme" pour tous. Au lieu d'utiliser
createFormBuilder
, vous pouvez modifier le nom de la forme pour éviter les conflits à l'aide deVoir https://stackoverflow.com/a/13366086/1025437 pour un exemple.
OriginalL'auteur Mondane
Je suis tombé sur cette erreur lors de la création d'un formulaire à étapes multiples.
Lors de l'étape 1 du formulaire est soumis, $request->demande contient acme_mybundle_myform tableau. Cela a créé une erreur de validation et arrêté à l'arrière, l'avant et les champs de formulaire à partir de peupler correctement. Sans parler de "cette forme-doit-pas-contenir-des-champs"
J'ai découvert cela grâce à un code par nni6.
La solution dans mon cas était à l'intérieur du contrôleur:
OriginalL'auteur Korutech App Solutions
J'ai eu le même message d'erreur.
C'était parce que j'avais une forme qui, par erreur, avait une valeur NULL nom.
Dans le code HTML, l'attribut name ressemblerait à ceci:
Aussi simple que cela.
Peut-être pas le cas de tout le monde, mais vaut la peine de vérifier.
OriginalL'auteur Tortus