diff --git a/book/forms.rst b/book/forms.rst index 9f8f8a1b7ac..60b809d07cd 100644 --- a/book/forms.rst +++ b/book/forms.rst @@ -833,6 +833,78 @@ form "type"). It can be used to quickly build a form object in the controller:: // ... } +.. tip:: + + Defining your form type as a service is a good practice and makes it easily usable in + your application: + + .. configuration-block:: + + .. code-block:: yaml + + # src/Acme/TaskBundle/Resources/config/services.yml + services: + acme_demo.form.type.task: + class: Acme\TaskBundle\Form\Type\TaskType + tags: + - { name: form.type, alias: task } + + .. code-block:: xml + + + + + + + .. code-block:: php + + // src/Acme/TaskBundle/Resources/config/services.php + use Symfony\Component\DependencyInjection\Definition; + + $container + ->register('acme_demo.form.type.task', 'Acme\TaskBundle\Form\Type\TaskType') + ->addTag('form.type', array( + 'alias' => 'task', + )) + ; + + That's it! Now you can use your form type directly in a controller:: + + // src/Acme/TaskBundle/Controller/DefaultController.php + + // ... + public function newAction() + { + $task = ...; + $form = $this->createForm('task', $task); + + // ... + } + + or even use it as a normal type in another form:: + + // src/Acme/TaskBundle/Form/Type/ListType.php + namespace Acme\TaskBundle\Form\Type; + + use Symfony\Component\Form\AbstractType; + use Symfony\Component\Form\FormBuilderInterface; + + class ListType extends AbstractType + { + public function buildForm(FormBuilderInterface $builder, array $options) + { + // ... + + $builder->add('task', 'task'); + // Note that the property ``task`` (first argument) + // is defined as a ``task`` form type (second). + } + + // ... + } + + Read :ref:`form-cookbook-form-field-service` for more information. + Placing the form logic into its own class means that the form can be easily reused elsewhere in your project. This is the best way to create forms, but the choice is ultimately up to you. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy