@@ -460,19 +460,29 @@ builder:
460
460
461
461
.. code-block :: php-symfony
462
462
463
+ // src/Acme/TaskBundle/Controller/DefaultController.php
464
+ namespace Acme\TaskBundle\Controller;
465
+
466
+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
463
467
use Symfony\Component\Form\Extension\Core\Type\TextType;
464
468
use Symfony\Component\Form\Extension\Core\Type\DateType;
465
469
466
- // ...
470
+ class DefaultController extends Controller
471
+ {
472
+ public function newAction(Request $request)
473
+ {
474
+ $defaults = array(
475
+ 'dueDate' => new \DateTime('tomorrow'),
476
+ );
467
477
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();
471
482
472
- $form = $this->createFormBuilder($defaults)
473
- ->add('task', TextType::class)
474
- ->add('dueDate', DateType::class)
475
- ->getForm();
483
+ // ...
484
+ }
485
+ }
476
486
477
487
.. tip ::
478
488
@@ -532,18 +542,23 @@ by ``handleRequest()`` to determine whether a form has been submitted):
532
542
533
543
.. code-block :: php-symfony
534
544
535
- use Symfony\Component\Form\Extension\Core\Type\FormType;
545
+ // src/Acme/TaskBundle/Controller/DefaultController.php
546
+ namespace Acme\TaskBundle\Controller;
536
547
537
- // ...
548
+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
549
+ use Symfony\Component\Form\Extension\Core\Type\FormType;
538
550
539
- public function searchAction()
551
+ class DefaultController extends Controller
540
552
{
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
+ ));
545
559
546
- // ...
560
+ // ...
561
+ }
547
562
}
548
563
549
564
.. _component-form-intro-handling-submission :
@@ -560,8 +575,8 @@ method:
560
575
561
576
use Symfony\Component\HttpFoundation\Request;
562
577
use Symfony\Component\HttpFoundation\RedirectResponse;
563
- use Symfony\Component\Form\Extension\Core\Type\TextType;
564
578
use Symfony\Component\Form\Extension\Core\Type\DateType;
579
+ use Symfony\Component\Form\Extension\Core\Type\TextType;
565
580
566
581
// ...
567
582
@@ -589,29 +604,34 @@ method:
589
604
590
605
.. code-block :: php-symfony
591
606
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 ;
594
609
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;
596
613
597
- public function newAction(Request $request)
614
+ class DefaultController extends Controller
598
615
{
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();
603
622
604
- $form->handleRequest($request);
623
+ $form->handleRequest($request);
605
624
606
- if ($form->isSubmitted() && $form->isValid()) {
607
- $data = $form->getData();
625
+ if ($form->isSubmitted() && $form->isValid()) {
626
+ $data = $form->getData();
608
627
609
- // ... perform some action, such as saving the data to the database
628
+ // ... perform some action, such as saving the data to the database
610
629
611
- return $this->redirectToRoute('task_success');
612
- }
630
+ return $this->redirectToRoute('task_success');
631
+ }
613
632
614
- // ...
633
+ // ...
634
+ }
615
635
}
616
636
617
637
This defines a common form "workflow", which contains 3 different possibilities:
@@ -660,22 +680,33 @@ option when building each field:
660
680
661
681
.. code-block :: php-symfony
662
682
683
+ // src/Acme/TaskBundle/Controller/DefaultController.php
684
+ namespace Acme\TaskBundle\Controller;
685
+
686
+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
663
687
use Symfony\Component\Validator\Constraints\NotBlank;
664
688
use Symfony\Component\Validator\Constraints\Type;
665
- use Symfony\Component\Form\Extension\Core\Type\TextType;
666
689
use Symfony\Component\Form\Extension\Core\Type\DateType;
690
+ use Symfony\Component\Form\Extension\Core\Type\TextType;
667
691
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
+ }
679
710
680
711
When the form is bound, these validation constraints will be applied automatically
681
712
and the errors will display next to the fields on error.
0 commit comments