symfony Forms -- Создать форму - Валидация формы - Предзаполненные поля
Primary tabs
Создание формы в Symfony может быть разным. Один из способов - создать директорию Type, и в ней класс MyFormType().
- В нём следующий код (Здесь же делается валидация полей):
<?php namespace AppBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\Length; /** * Форма формирования квитанции */ class CreatingBillType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options): void { // добавляем все необходимые поля, и их свойства. $builder->add('rs', TextType::class, [ 'attr'=> [ 'placeholder' => 'Номер расчётного счёта', ], // Здесь же происходит валидация полей, с помощью constraints 'constraints' => [ new Length([ 'min' => 20, 'max' => 20, ]), ], ]) ->add('bik', TextType::class, [ 'attr'=> [ 'placeholder' => 'БИК', ], 'constraints' => [ new Regex([ 'pattern'=> "/^0[0-9]{8}$/x" ]), ], ]) ->add('inn', TextType::class, [ 'attr'=> [ 'placeholder' => 'ИНН', ], 'constraints' => [ new Length([ 'min' => 10, 'max' => 10, ]), ], ]) ->add('submit', SubmitType::class, [ 'label' => 'Создать', ]); }
- В контрллере (Здесь же видно как предзаполнить форму данными):
/** * @Route("/creating-bill", name="creating_bill") * * @param Request $request * * @return Response */ public function indexAction(Request $request): Response { // создаём форму // Чтобы предзаполнить форму значениями из контроллера, передаём значения вторым аргументом методу createForm() $form = $this->createForm(CreatingBillType::class, array $data); // так определяем, какие данные переданы нам в метод о форме $form->handleRequest($request); // проверка, была ли нажата кнопка Отправить и валидны ли данные if ($form->isSubmitted() && $form->isValid()) { // так достаём значения, которые ввёл пользователь $data = $form->getData(); // далее код, обрабатывающий форму } // так печатаем форму return $this->render('registration/creating_bill.html.twig', [ 'form' => $form->createView(), 'errors' => $form->getErrors(), ]); }
Источники
Формы Symfony: https://symfony.com/doc/current/forms.html
Регулярные выражения: http://www.php.su/articles/?cat=regexp&p...
- Log in to post comments
- 3423 reads