Comment puis-je ajouter un indépendant champ à un formulaire de Symfony qui est par ailleurs lié à une entité?
Peut-être que je vais manquer d'évident, mais comment puis-je (ou peut I) d'ajouter un supplément de "indépendant" pour un formulaire de Symfony qui est par ailleurs lié à une entité?
Disons que j'ai une entité avec des champs first_name
et last_name
. Je fais la chose typique dans ma classe de formulaire buildForm
méthode.
$builder
->add('first_name')
->add('last_name')
;
et ceci dans mon controller:
$editForm = $this->createForm(new MyType(), $entity);
Qui fonctionne très bien, mais je voudrais ajouter une autre zone de texte, nous allons l'appeler "extra", et de recevoir la valeur de l'action POST. Si je ne $builder->add('extra')
, il se plaint de ce que
NoSuchPropertyException dans PropertyAccessor.php ligne 479:
Ni la propriété "extra", ni l'une des méthodes de "getExtra()", "extra()", "isExtra()", "hasExtra()", "__get()" existent et ont accès public dans la classe...
Ce qui est correct. Je veux juste l'utiliser pour recueillir quelques informations supplémentaires de l'utilisateur et d'en faire quelque chose d'autre que de le ranger avec l'entité.
Je sais comment faire un complètement autonome en forme, mais pas celui qui est "mixte".
Est-ce possible?
- speakerdeck.com/u/bschussek/p/symfony-form-tricks diapositive 55
Vous devez vous connecter pour publier un commentaire.
Dans votre formulaire ajouter un champ de texte avec un faux property_path:
Vous pouvez ensuite accéder aux données de votre contrôleur:
Mise à JOUR
Le nouveau chemin depuis Symfony 2.1 est d'utiliser le
mapped
option et définissez que pourfalse
.->add('extra', null, array('mapped' => false))
Des crédits pour la mise à jour d'informations à Henrik Bjørnskov ( commentaire ci-dessous )
mapped
option et définissez que pourfalse
Depuis Symfony 2.1, l'utilisation de la
mapped
option:Selon la La Documentation:
allow_extra_fields
mappé