Проверка на минимальное значение в форме?

В Symfony, чтобы выполнить проверку на минимальное значение в форме, можно воспользоваться встроенной возможностью валидации.

Для начала, необходимо создать класс формы, используя компонент Form. В методе buildForm() вы можете определить поля формы. Давайте предположим, что есть поле age, для которого необходимо проверить минимальное значение.

use SymfonyComponentFormAbstractType;
use SymfonyComponentFormExtensionCoreTypeIntegerType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentValidatorConstraintsGreaterThanOrEqual;
use SymfonyComponentOptionsResolverOptionsResolver;

class MyFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('age', IntegerType::class, [
                'constraints' => [
                    new GreaterThanOrEqual([
                        'value' => 18,
                        'message' => 'Минимальный возраст должен быть 18 лет или больше.',
                    ]),
                ],
            ]);
    }
    
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'AppEntityMyEntity',
        ]);
    }
}

В приведенном примере мы добавляем ограничение GreaterThanOrEqual, которое проверяет, что значение поля age больше или равно указанному значению (18 в данном случае). В случае, если значение будет меньше 18, будет выведено сообщение об ошибке.

После того, как класс формы создан, можно использовать его для создания экземпляра формы и обработки данных. Разместим эту форму в контроллере Symfony.

use SymfonyComponentHttpFoundationRequest;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use AppFormMyFormType;

class MyController extends AbstractController
{
    public function myAction(Request $request)
    {
        $myEntity = new MyEntity(); // Ваша сущность
        $form = $this->createForm(MyFormType::class, $myEntity);
        
        $form->handleRequest($request);
        
        if ($form->isSubmitted() && $form->isValid()) {
            // выполняем нужные действия...
        }
        
        return $this->render('my_template.html.twig', [
            'form' => $form->createView(),
        ]);
    }
}

В приведенном примере мы создаем экземпляр формы с помощью $this->createForm(), передавая ему класс формы и экземпляр сущности. Затем мы обрабатываем отправленные данные формы с помощью $form->handleRequest(), и если форма была отправлена и данные прошли валидацию, мы можем выполнить необходимые действия.

Наконец, рендерим шаблон, передавая в него представление формы с помощью метода $form->createView().