Где в Symfony 4 обявлять и производить валидацию формы(имеятся ввиду backend)?

В Symfony 4 валидацию формы можно объявлять и выполнять на стороне backend с помощью механизма валидации, который предоставляет этот фреймворк.

Для начала необходимо установить и настроить компонент валидации Symfony в вашем проекте. Этот компонент включается в Symfony как зависимость, поэтому его установка необходима. Это можно сделать с помощью Composer, выполнив следующую команду:

composer require symfony/validator

После установки компонента валидации, вы можете использовать его в своем коде для валидации формы. Для объявления валидации формы вы должны создать класс, который будет представлять вашу форму. В этом классе вы будете определять поля формы и их правила валидации.

Например, представим, что у вас есть форма регистрации пользователя с полями name, email и password. Вы можете создать класс, который будет представлять эту форму, и определить правила валидации для каждого поля в этом классе.

use SymfonyComponentValidatorConstraints as Assert;

class RegistrationForm
{
    /**
     * @AssertNotBlank(message="Name is not blank")
     */
    public $name;

    /**
     * @AssertNotBlank(message="Email is not blank")
     * @AssertEmail(message="Email is not valid")
     */
    public $email;

    /**
     * @AssertNotBlank(message="Password is not blank")
     * @AssertLength(min=6, minMessage="Password is too short")
     */
    public $password;
}

В приведенном выше примере мы использовали аннотации Symfony для определения правил валидации для каждого поля формы. Аннотация @AssertNotBlank говорит, что поле не должно быть пустым, а @AssertLength определяет, что значение поля должно быть не короче 6 символов.

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

use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentValidatorValidatorValidatorInterface;

public function registration(Request $request, ValidatorInterface $validator)
{
    $form = new RegistrationForm();
    $form->name = $request->request->get('name');
    $form->email = $request->request->get('email');
    $form->password = $request->request->get('password');

    $errors = $validator->validate($form);

    // обработка ошибок валидации, например, добавление их во flash сообщение или вывод в шаблон
    if (count($errors) > 0) {
        // обработка ошибок валидации...
    }

    // сохранение данных формы в базу данных или другое действие

    // редирект на другую страницу или отображение ответа пользователю
}

В приведенном выше примере мы получаем значения полей формы, создаем экземпляр класса валидатора и вызываем его метод validate(), передавая ему экземпляр формы, чтобы применить определенные нами правила валидации. Метод validate() возвращает коллекцию ошибок валидации. Если количество ошибок больше нуля, то мы можем обрабатывать эти ошибки по вашему усмотрению, например, добавлять их во flash сообщение или выводить непосредственно на страницу.

Таким образом, в Symfony 4 вы можете объявлять и выполнять валидацию формы на стороне backend, используя компонент валидации Symfony. Вы определяете правила валидации для каждого поля формы в соответствующем классе формы, а затем применяете эти правила с помощью валидатора в вашем контроллере.