Skip to content

Commit 3237a34

Browse files
committed
Updated form constant usage
1 parent 3ab3830 commit 3237a34

File tree

2 files changed

+101
-57
lines changed

2 files changed

+101
-57
lines changed

book/forms.rst

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ from inside a controller::
8080
use AppBundle\Entity\Task;
8181
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
8282
use Symfony\Component\HttpFoundation\Request;
83+
use Symfony\Component\Form\Extension\Core\Type\TextType;
84+
use Symfony\Component\Form\Extension\Core\Type\DateType;
85+
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
8386

8487
class DefaultController extends Controller
8588
{
@@ -91,9 +94,11 @@ from inside a controller::
9194
$task->setDueDate(new \DateTime('tomorrow'));
9295

9396
$form = $this->createFormBuilder($task)
94-
->add('task', 'Symfony\Component\Form\Extension\Core\Type\TextType')
95-
->add('dueDate', 'Symfony\Component\Form\Extension\Core\Type\DateType')
96-
->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType', array('label' => 'Create Task'))
97+
->add('task', TextType::class)
98+
// If you use PHP 5.3 or 5.4 you must use
99+
// ->add('task', 'Symfony\Component\Form\Extension\Core\Type\TextType')
100+
->add('dueDate', DateType::class)
101+
->add('save', SubmitType::class, array('label' => 'Create Task'))
97102
->getForm();
98103

99104
return $this->render('default/new.html.twig', array(
@@ -120,16 +125,10 @@ You've also assigned each a "type" (e.g. ``TextType`` and ``DateType``),
120125
represented by its fully qualified class name. Among other things, it determines
121126
which HTML form tag(s) is rendered for that field.
122127

123-
.. tip::
124-
125-
If you are using PHP 5.5 or later you can use the ``::class`` constant of a
126-
form type to get its fully qualified class name. Make sure you include the
127-
class with a ``use`` statement.
128-
129128
.. versionadded:: 2.8
130129
To denote the form type, you have to use the fully qualified class name.
131-
Before Symfony 2.8, you could use an alias for each type like 'name' or
132-
'date'.
130+
Before Symfony 2.8, you could use an alias for each type like ``'name'`` or
131+
``'date'``.
133132

134133
Finally, you added a submit button with a custom label for submitting the form to
135134
the server.
@@ -236,9 +235,9 @@ controller::
236235
$task = new Task();
237236

238237
$form = $this->createFormBuilder($task)
239-
->add('task', 'Symfony\Component\Form\Extension\Core\Type\TextType')
240-
->add('dueDate', 'Symfony\Component\Form\Extension\Core\Type\DateType')
241-
->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType', array('label' => 'Create Task'))
238+
->add('task', TextType::class)
239+
->add('dueDate', DateType::class)
240+
->add('save', SubmitType::class, array('label' => 'Create Task'))
242241
->getForm();
243242

244243
$form->handleRequest($request);
@@ -322,10 +321,10 @@ which of the buttons was clicked to adapt the program flow in your controller.
322321
To do this, add a second button with the caption "Save and add" to your form::
323322

324323
$form = $this->createFormBuilder($task)
325-
->add('task', 'Symfony\Component\Form\Extension\Core\Type\TextType')
326-
->add('dueDate', 'Symfony\Component\Form\Extension\Core\Type\DateType')
327-
->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType', array('label' => 'Create Task'))
328-
->add('saveAndAdd', 'Symfony\Component\Form\Extension\Core\Type\SubmitType', array('label' => 'Save and Add'))
324+
->add('task', TextType::class)
325+
->add('dueDate', DateType::class)
326+
->add('save', SubmitType::class, array('label' => 'Create Task'))
327+
->add('saveAndAdd', SubmitType::class, array('label' => 'Save and Add'))
329328
->getForm();
330329

331330
In your controller, use the button's
@@ -634,8 +633,8 @@ First, we need to add the two buttons to the form::
634633

635634
$form = $this->createFormBuilder($task)
636635
// ...
637-
->add('nextStep', 'Symfony\Component\Form\Extension\Core\Type\SubmitType')
638-
->add('previousStep', 'Symfony\Component\Form\Extension\Core\Type\SubmitType')
636+
->add('nextStep', SubmitType::class)
637+
->add('previousStep', SubmitType::class)
639638
->getForm();
640639

641640
Then, we configure the button for returning to the previous step to run
@@ -644,7 +643,7 @@ so we set its ``validation_groups`` option to false::
644643

645644
$form = $this->createFormBuilder($task)
646645
// ...
647-
->add('previousStep', 'Symfony\Component\Form\Extension\Core\Type\SubmitType', array(
646+
->add('previousStep', SubmitType::class, array(
648647
'validation_groups' => false,
649648
))
650649
->getForm();
@@ -681,7 +680,7 @@ boxes. However, the :doc:`date field </reference/forms/types/date>` can be
681680
configured to be rendered as a single text box (where the user would enter
682681
the date as a string in the box)::
683682

684-
->add('dueDate', 'date', array('widget' => 'single_text'))
683+
->add('dueDate', DateType::class, array('widget' => 'single_text'))
685684

686685
.. image:: /images/book/form-simple2.png
687686
:align: center
@@ -713,7 +712,7 @@ the documentation for each type.
713712
The label for the form field can be set using the ``label`` option,
714713
which can be applied to any field::
715714

716-
->add('dueDate', 'Symfony\Component\Form\Extension\Core\Type\DateType', array(
715+
->add('dueDate', DateType::class, array(
717716
'widget' => 'single_text',
718717
'label' => 'Due Date',
719718
))
@@ -743,7 +742,7 @@ guess from the validation rules that both the ``task`` field is a normal
743742
$form = $this->createFormBuilder($task)
744743
->add('task')
745744
->add('dueDate', null, array('widget' => 'single_text'))
746-
->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType')
745+
->add('save', SubmitType::class)
747746
->getForm();
748747
}
749748

@@ -1004,9 +1003,9 @@ ways. If you build your form in the controller, you can use ``setAction()`` and
10041003
$form = $this->createFormBuilder($task)
10051004
->setAction($this->generateUrl('target_route'))
10061005
->setMethod('GET')
1007-
->add('task', 'Symfony\Component\Form\Extension\Core\Type\TextType')
1008-
->add('dueDate', 'Symfony\Component\Form\Extension\Core\Type\DateType')
1009-
->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType')
1006+
->add('task', TextType::class)
1007+
->add('dueDate', DateType::clas)
1008+
->add('save', SubmitType::class)
10101009
->getForm();
10111010

10121011
.. note::
@@ -1068,6 +1067,7 @@ that will house the logic for building the task form::
10681067

10691068
use Symfony\Component\Form\AbstractType;
10701069
use Symfony\Component\Form\FormBuilderInterface;
1070+
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
10711071

10721072
class TaskType extends AbstractType
10731073
{
@@ -1076,7 +1076,7 @@ that will house the logic for building the task form::
10761076
$builder
10771077
->add('task')
10781078
->add('dueDate', null, array('widget' => 'single_text'))
1079-
->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType')
1079+
->add('save', SubmitType::class)
10801080
;
10811081
}
10821082
}
@@ -1085,11 +1085,12 @@ This new class contains all the directions needed to create the task form. It ca
10851085
be used to quickly build a form object in the controller::
10861086

10871087
// src/AppBundle/Controller/DefaultController.php
1088+
use AppBundle\Form\Type\TaskType;
10881089

10891090
public function newAction()
10901091
{
10911092
$task = ...;
1092-
$form = $this->createForm('AppBundle\Form\Type\TaskType', $task);
1093+
$form = $this->createForm(TaskType::class, $task);
10931094

10941095
// ...
10951096
}
@@ -1136,7 +1137,7 @@ the choice is ultimately up to you.
11361137
$builder
11371138
->add('task')
11381139
->add('dueDate', null, array('mapped' => false))
1139-
->add('save', 'submit')
1140+
->add('save', SubmitType::class)
11401141
;
11411142
}
11421143

@@ -1174,6 +1175,7 @@ type. Create a constructor to your form type to receive the service::
11741175
use App\Utility\MyService;
11751176
use Symfony\Component\Form\AbstractType;
11761177
use Symfony\Component\Form\FormBuilderInterface;
1178+
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
11771179

11781180
class TaskType extends AbstractType
11791181
{
@@ -1190,7 +1192,7 @@ type. Create a constructor to your form type to receive the service::
11901192
$builder
11911193
->add('task')
11921194
->add('dueDate', null, array('widget' => 'single_text'))
1193-
->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType')
1195+
->add('save', SubmitType::class)
11941196
;
11951197
}
11961198
}
@@ -1228,7 +1230,9 @@ Define your form type as a service.
12281230
.. code-block:: php
12291231
12301232
// src/AppBundle/Resources/config/services.php
1231-
$definition = new Definition('AppBundle\Form\Type\TaskType', array(
1233+
use AppBundle\Form\Type\TaskType;
1234+
1235+
$definition = new Definition(TaskType::class, array(
12321236
new Reference('app.my_service'),
12331237
));
12341238
$container
@@ -1373,12 +1377,13 @@ class:
13731377
.. code-block:: php
13741378
13751379
use Symfony\Component\Form\FormBuilderInterface;
1380+
use AppBundle\Form\Type\CategoryType;
13761381
13771382
public function buildForm(FormBuilderInterface $builder, array $options)
13781383
{
13791384
// ...
13801385
1381-
$builder->add('category', 'AppBundle\Form\Type\CategoryType');
1386+
$builder->add('category', CategoryType::class);
13821387
}
13831388
13841389
The fields from ``CategoryType`` can now be rendered alongside those from
@@ -1849,10 +1854,10 @@ an array of the submitted data. This is actually really easy::
18491854
{
18501855
$defaultData = array('message' => 'Type your message here');
18511856
$form = $this->createFormBuilder($defaultData)
1852-
->add('name', 'text')
1853-
->add('email', 'email')
1854-
->add('message', 'textarea')
1855-
->add('send', 'submit')
1857+
->add('name', TextType::class)
1858+
->add('email', EmailType::class)
1859+
->add('message', TextareaType::class)
1860+
->add('send', SubmitType::class)
18561861
->getForm();
18571862

18581863
$form->handleRequest($request);
@@ -1913,12 +1918,13 @@ but here's a short example:
19131918
19141919
use Symfony\Component\Validator\Constraints\Length;
19151920
use Symfony\Component\Validator\Constraints\NotBlank;
1921+
use Symfony\Component\Form\Extension\Core\Type\TextType;
19161922
19171923
$builder
1918-
->add('firstName', 'text', array(
1924+
->add('firstName', TextType::class, array(
19191925
'constraints' => new Length(array('min' => 3)),
19201926
))
1921-
->add('lastName', 'text', array(
1927+
->add('lastName', TextType::class, array(
19221928
'constraints' => array(
19231929
new NotBlank(),
19241930
new Length(array('min' => 3)),

0 commit comments

Comments
 (0)
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