@@ -460,19 +460,29 @@ builder:
460460
461461 .. code-block :: php-symfony
462462
463+ // src/Acme/TaskBundle/Controller/DefaultController.php
464+ namespace Acme\TaskBundle\Controller;
465+
466+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
463467 use Symfony\Component\Form\Extension\Core\Type\TextType;
464468 use Symfony\Component\Form\Extension\Core\Type\DateType;
465469
466- // ...
470+ class DefaultController extends Controller
471+ {
472+ public function newAction(Request $request)
473+ {
474+ $defaults = array(
475+ 'dueDate' => new \DateTime('tomorrow'),
476+ );
467477
468- $defaults = array(
469- 'dueDate' => new \DateTime('tomorrow'),
470- );
478+ $form = $this->createFormBuilder($defaults)
479+ ->add('task', TextType::class)
480+ ->add('dueDate', DateType::class)
481+ ->getForm();
471482
472- $form = $this->createFormBuilder($defaults)
473- ->add('task', TextType::class)
474- ->add('dueDate', DateType::class)
475- ->getForm();
483+ // ...
484+ }
485+ }
476486
477487.. tip ::
478488
@@ -532,18 +542,23 @@ by ``handleRequest()`` to determine whether a form has been submitted):
532542
533543 .. code-block :: php-symfony
534544
535- use Symfony\Component\Form\Extension\Core\Type\FormType;
545+ // src/Acme/TaskBundle/Controller/DefaultController.php
546+ namespace Acme\TaskBundle\Controller;
536547
537- // ...
548+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
549+ use Symfony\Component\Form\Extension\Core\Type\FormType;
538550
539- public function searchAction()
551+ class DefaultController extends Controller
540552 {
541- $formBuilder = $this->createFormBuilder(null, array(
542- 'action' => '/search',
543- 'method' => 'GET',
544- ));
553+ public function searchAction()
554+ {
555+ $formBuilder = $this->createFormBuilder(null, array(
556+ 'action' => '/search',
557+ 'method' => 'GET',
558+ ));
545559
546- // ...
560+ // ...
561+ }
547562 }
548563
549564 .. _component-form-intro-handling-submission :
@@ -560,8 +575,8 @@ method:
560575
561576 use Symfony\Component\HttpFoundation\Request;
562577 use Symfony\Component\HttpFoundation\RedirectResponse;
563- use Symfony\Component\Form\Extension\Core\Type\TextType;
564578 use Symfony\Component\Form\Extension\Core\Type\DateType;
579+ use Symfony\Component\Form\Extension\Core\Type\TextType;
565580
566581 // ...
567582
@@ -589,29 +604,34 @@ method:
589604
590605 .. code-block :: php-symfony
591606
592- use Symfony\Component\Form\Extension\Core\Type\TextType;
593- use Symfony\Component\Form\Extension\Core\Type\DateType ;
607+ // src/Acme/TaskBundle/Controller/DefaultController.php
608+ namespace Acme\TaskBundle\Controller ;
594609
595- // ...
610+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
611+ use Symfony\Component\Form\Extension\Core\Type\DateType;
612+ use Symfony\Component\Form\Extension\Core\Type\TextType;
596613
597- public function newAction(Request $request)
614+ class DefaultController extends Controller
598615 {
599- $form = $this->createFormBuilder()
600- ->add('task', TextType::class)
601- ->add('dueDate', DateType::class)
602- ->getForm();
616+ public function newAction(Request $request)
617+ {
618+ $form = $this->createFormBuilder()
619+ ->add('task', TextType::class)
620+ ->add('dueDate', DateType::class)
621+ ->getForm();
603622
604- $form->handleRequest($request);
623+ $form->handleRequest($request);
605624
606- if ($form->isSubmitted() && $form->isValid()) {
607- $data = $form->getData();
625+ if ($form->isSubmitted() && $form->isValid()) {
626+ $data = $form->getData();
608627
609- // ... perform some action, such as saving the data to the database
628+ // ... perform some action, such as saving the data to the database
610629
611- return $this->redirectToRoute('task_success');
612- }
630+ return $this->redirectToRoute('task_success');
631+ }
613632
614- // ...
633+ // ...
634+ }
615635 }
616636
617637This defines a common form "workflow", which contains 3 different possibilities:
@@ -660,22 +680,33 @@ option when building each field:
660680
661681 .. code-block :: php-symfony
662682
683+ // src/Acme/TaskBundle/Controller/DefaultController.php
684+ namespace Acme\TaskBundle\Controller;
685+
686+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
663687 use Symfony\Component\Validator\Constraints\NotBlank;
664688 use Symfony\Component\Validator\Constraints\Type;
665- use Symfony\Component\Form\Extension\Core\Type\TextType;
666689 use Symfony\Component\Form\Extension\Core\Type\DateType;
690+ use Symfony\Component\Form\Extension\Core\Type\TextType;
667691
668- $form = $this->createFormBuilder()
669- ->add('task', TextType::class, array(
670- 'constraints' => new NotBlank(),
671- ))
672- ->add('dueDate', DateType::class, array(
673- 'constraints' => array(
674- new NotBlank(),
675- new Type(\DateTime::class),
676- )
677- ))
678- ->getForm();
692+ class DefaultController extends Controller
693+ {
694+ public function newAction(Request $request)
695+ {
696+ $form = $this->createFormBuilder()
697+ ->add('task', TextType::class, array(
698+ 'constraints' => new NotBlank(),
699+ ))
700+ ->add('dueDate', DateType::class, array(
701+ 'constraints' => array(
702+ new NotBlank(),
703+ new Type(\D ateTime::class),
704+ )
705+ ))
706+ ->getForm();
707+ // ...
708+ }
709+ }
679710
680711When the form is bound, these validation constraints will be applied automatically
681712and the errors will display next to the fields on error.
0 commit comments