@@ -463,19 +463,29 @@ builder:
463463
464464 .. code-block :: php-symfony
465465
466+ // src/Acme/TaskBundle/Controller/DefaultController.php
467+ namespace Acme\TaskBundle\Controller;
468+
469+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
466470 use Symfony\Component\Form\Extension\Core\Type\TextType;
467471 use Symfony\Component\Form\Extension\Core\Type\DateType;
468472
469- // ...
473+ class DefaultController extends Controller
474+ {
475+ public function newAction(Request $request)
476+ {
477+ $defaults = array(
478+ 'dueDate' => new \DateTime('tomorrow'),
479+ );
470480
471- $defaults = array(
472- 'dueDate' => new \DateTime('tomorrow'),
473- );
481+ $form = $this->createFormBuilder($defaults)
482+ ->add('task', TextType::class)
483+ ->add('dueDate', DateType::class)
484+ ->getForm();
474485
475- $form = $this->createFormBuilder($defaults)
476- ->add('task', TextType::class)
477- ->add('dueDate', DateType::class)
478- ->getForm();
486+ // ...
487+ }
488+ }
479489
480490.. tip ::
481491
@@ -539,18 +549,23 @@ by ``handleRequest()`` to determine whether a form has been submitted):
539549
540550 .. code-block :: php-symfony
541551
542- use Symfony\Component\Form\Extension\Core\Type\FormType;
552+ // src/Acme/TaskBundle/Controller/DefaultController.php
553+ namespace Acme\TaskBundle\Controller;
543554
544- // ...
555+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
556+ use Symfony\Component\Form\Extension\Core\Type\FormType;
545557
546- public function searchAction()
558+ class DefaultController extends Controller
547559 {
548- $formBuilder = $this->createFormBuilder(null, array(
549- 'action' => '/search',
550- 'method' => 'GET',
551- ));
560+ public function searchAction()
561+ {
562+ $formBuilder = $this->createFormBuilder(null, array(
563+ 'action' => '/search',
564+ 'method' => 'GET',
565+ ));
552566
553- // ...
567+ // ...
568+ }
554569 }
555570
556571 .. _component-form-intro-handling-submission :
@@ -567,8 +582,8 @@ method:
567582
568583 use Symfony\Component\HttpFoundation\Request;
569584 use Symfony\Component\HttpFoundation\RedirectResponse;
570- use Symfony\Component\Form\Extension\Core\Type\TextType;
571585 use Symfony\Component\Form\Extension\Core\Type\DateType;
586+ use Symfony\Component\Form\Extension\Core\Type\TextType;
572587
573588 // ...
574589
@@ -596,29 +611,34 @@ method:
596611
597612 .. code-block :: php-symfony
598613
599- use Symfony\Component\Form\Extension\Core\Type\TextType;
600- use Symfony\Component\Form\Extension\Core\Type\DateType ;
614+ // src/Acme/TaskBundle/Controller/DefaultController.php
615+ namespace Acme\TaskBundle\Controller ;
601616
602- // ...
617+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
618+ use Symfony\Component\Form\Extension\Core\Type\DateType;
619+ use Symfony\Component\Form\Extension\Core\Type\TextType;
603620
604- public function newAction(Request $request)
621+ class DefaultController extends Controller
605622 {
606- $form = $this->createFormBuilder()
607- ->add('task', TextType::class)
608- ->add('dueDate', DateType::class)
609- ->getForm();
623+ public function newAction(Request $request)
624+ {
625+ $form = $this->createFormBuilder()
626+ ->add('task', TextType::class)
627+ ->add('dueDate', DateType::class)
628+ ->getForm();
610629
611- $form->handleRequest($request);
630+ $form->handleRequest($request);
612631
613- if ($form->isSubmitted() && $form->isValid()) {
614- $data = $form->getData();
632+ if ($form->isSubmitted() && $form->isValid()) {
633+ $data = $form->getData();
615634
616- // ... perform some action, such as saving the data to the database
635+ // ... perform some action, such as saving the data to the database
617636
618- return $this->redirectToRoute('task_success');
619- }
637+ return $this->redirectToRoute('task_success');
638+ }
620639
621- // ...
640+ // ...
641+ }
622642 }
623643
624644This defines a common form "workflow", which contains 3 different possibilities:
@@ -667,22 +687,33 @@ option when building each field:
667687
668688 .. code-block :: php-symfony
669689
690+ // src/Acme/TaskBundle/Controller/DefaultController.php
691+ namespace Acme\TaskBundle\Controller;
692+
693+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
670694 use Symfony\Component\Validator\Constraints\NotBlank;
671695 use Symfony\Component\Validator\Constraints\Type;
672- use Symfony\Component\Form\Extension\Core\Type\TextType;
673696 use Symfony\Component\Form\Extension\Core\Type\DateType;
697+ use Symfony\Component\Form\Extension\Core\Type\TextType;
674698
675- $form = $this->createFormBuilder()
676- ->add('task', TextType::class, array(
677- 'constraints' => new NotBlank(),
678- ))
679- ->add('dueDate', DateType::class, array(
680- 'constraints' => array(
681- new NotBlank(),
682- new Type(\DateTime::class),
683- )
684- ))
685- ->getForm();
699+ class DefaultController extends Controller
700+ {
701+ public function newAction(Request $request)
702+ {
703+ $form = $this->createFormBuilder()
704+ ->add('task', TextType::class, array(
705+ 'constraints' => new NotBlank(),
706+ ))
707+ ->add('dueDate', DateType::class, array(
708+ 'constraints' => array(
709+ new NotBlank(),
710+ new Type(\D ateTime::class),
711+ )
712+ ))
713+ ->getForm();
714+ // ...
715+ }
716+ }
686717
687718When the form is bound, these validation constraints will be applied automatically
688719and the errors will display next to the fields on error.
0 commit comments