@@ -463,19 +463,29 @@ builder:
463
463
464
464
.. code-block :: php-symfony
465
465
466
+ // src/Acme/TaskBundle/Controller/DefaultController.php
467
+ namespace Acme\TaskBundle\Controller;
468
+
469
+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
466
470
use Symfony\Component\Form\Extension\Core\Type\TextType;
467
471
use Symfony\Component\Form\Extension\Core\Type\DateType;
468
472
469
- // ...
473
+ class DefaultController extends Controller
474
+ {
475
+ public function newAction(Request $request)
476
+ {
477
+ $defaults = array(
478
+ 'dueDate' => new \DateTime('tomorrow'),
479
+ );
470
480
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();
474
485
475
- $form = $this->createFormBuilder($defaults)
476
- ->add('task', TextType::class)
477
- ->add('dueDate', DateType::class)
478
- ->getForm();
486
+ // ...
487
+ }
488
+ }
479
489
480
490
.. tip ::
481
491
@@ -539,18 +549,23 @@ by ``handleRequest()`` to determine whether a form has been submitted):
539
549
540
550
.. code-block :: php-symfony
541
551
542
- use Symfony\Component\Form\Extension\Core\Type\FormType;
552
+ // src/Acme/TaskBundle/Controller/DefaultController.php
553
+ namespace Acme\TaskBundle\Controller;
543
554
544
- // ...
555
+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
556
+ use Symfony\Component\Form\Extension\Core\Type\FormType;
545
557
546
- public function searchAction()
558
+ class DefaultController extends Controller
547
559
{
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
+ ));
552
566
553
- // ...
567
+ // ...
568
+ }
554
569
}
555
570
556
571
.. _component-form-intro-handling-submission :
@@ -567,8 +582,8 @@ method:
567
582
568
583
use Symfony\Component\HttpFoundation\Request;
569
584
use Symfony\Component\HttpFoundation\RedirectResponse;
570
- use Symfony\Component\Form\Extension\Core\Type\TextType;
571
585
use Symfony\Component\Form\Extension\Core\Type\DateType;
586
+ use Symfony\Component\Form\Extension\Core\Type\TextType;
572
587
573
588
// ...
574
589
@@ -596,29 +611,34 @@ method:
596
611
597
612
.. code-block :: php-symfony
598
613
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 ;
601
616
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;
603
620
604
- public function newAction(Request $request)
621
+ class DefaultController extends Controller
605
622
{
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();
610
629
611
- $form->handleRequest($request);
630
+ $form->handleRequest($request);
612
631
613
- if ($form->isSubmitted() && $form->isValid()) {
614
- $data = $form->getData();
632
+ if ($form->isSubmitted() && $form->isValid()) {
633
+ $data = $form->getData();
615
634
616
- // ... perform some action, such as saving the data to the database
635
+ // ... perform some action, such as saving the data to the database
617
636
618
- return $this->redirectToRoute('task_success');
619
- }
637
+ return $this->redirectToRoute('task_success');
638
+ }
620
639
621
- // ...
640
+ // ...
641
+ }
622
642
}
623
643
624
644
This defines a common form "workflow", which contains 3 different possibilities:
@@ -667,22 +687,33 @@ option when building each field:
667
687
668
688
.. code-block :: php-symfony
669
689
690
+ // src/Acme/TaskBundle/Controller/DefaultController.php
691
+ namespace Acme\TaskBundle\Controller;
692
+
693
+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
670
694
use Symfony\Component\Validator\Constraints\NotBlank;
671
695
use Symfony\Component\Validator\Constraints\Type;
672
- use Symfony\Component\Form\Extension\Core\Type\TextType;
673
696
use Symfony\Component\Form\Extension\Core\Type\DateType;
697
+ use Symfony\Component\Form\Extension\Core\Type\TextType;
674
698
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
+ }
686
717
687
718
When the form is bound, these validation constraints will be applied automatically
688
719
and the errors will display next to the fields on error.
0 commit comments