Как установить ограничение на число (1-10) в поле ввода в компоненте symfony? - PullRequest
1 голос
/ 15 октября 2019

Я написал некоторый код для формы, используя компонент формы Symfony, но мне нужно ограничить число в поле ввода уровня 1-10. Таким образом, если он ниже или выше, он должен выдать ошибку или предупреждение. Есть ли методы, которые помогают достичь этого?

  $form = $this->createFormBuilder($skill)
        ->add('name', TextType::class, array('attr' => array(
            'required' => true,
            'class' => 'form-control')))
        ->add('level', NumberType::class, array(
            'required' => true,
            'attr' => array('class' => 'form-control')
        ))
        ->add('save', SubmitType::class, array(
            'label' => 'Create',
            'attr' => array('class' => 'btn btn-primary mt-3')
        ))
        ->getForm();
    $form->handleRequest($request);
    if($form->isSubmitted() && $form->isValid()) {
        $skill = $form->getData();
        $entityManager = $this->getDoctrine()->getManager();
        $person = $entityManager->getRepository(Person::class)->find($person_id);
        $person->addSkill($skill);
        $entityManager->persist($skill);
        $entityManager->persist($person);
        $entityManager->flush();
        return $this->redirectToRoute('skill_list');
    }
    return $this->render('main/new.html.twig', array(
        'form' => $form->createView()
    ));

1 Ответ

2 голосов
/ 15 октября 2019

Поскольку у вас есть номер, который вводится в сущность, вы можете использовать довольно стандартное утверждение для самой сущности. Диапазон .

<?php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Skill
{
    // .. other fields

    /**
     * @ORM\Column(type="integer")
     * @Assert\Range(
     *      min = 1,
     *      max = 10,
     *      minMessage = "You must rate at least {{ limit }} points",
     *      maxMessage = "You cannot rate yourself higher than {{ limit }} points"
     * )
     */
    protected $level;
}

Форма isValid() будет использовать эти аннотации, чтобы проверить действительный диапазон уровня $, и вернет ошибку, чтобы показать, что данное число не от 1до 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...