Как валидировать необработанные значения (скалярные значения и массивы)

Как валидировать необработанные значения (скалярные значения и массивы)

Обычно вы будете валидировать объекты целиком. Но иногда, вам нужно будет валидировать простое значение - например, убедиться в том, что строка является валидным адресом электронной почты. На самом деле это достаточно легко сделать. Изнутри контроллера это выглядит следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// ...
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Validator\ValidatorInterface;

// ...
public function addEmailAction($email, ValidatorInterface $validator)
{
    $emailConstraint = new Assert\Email();
    // все "опции" ограничения могут быть установлены таким образом
    $emailConstraint->message = 'Invalid email address';

    // использовать валидатор для валидации значения
    $errorList = $validator->validate(
        $email,
        $emailConstraint
    );

    if (0 === count($errorList)) {
        // ... это валидный адрес электронной почты, сделать что-либо
    } else {
        // это *не* валидный адрес электронной почты
        $errorMessage = $errorList[0]->getMessage();

        // ... сделать что-либо с ошибкой
    }

    // ...
}

Вызвав в валидаторе validate, вы можете передать необработанное значение и объект ограничения, к которому вы хотите применить валидацию. Полный список доступных ограничений - так же как и полное имя класса для каждого ограничения - доступен в разделе справочник ограничений.

Метод validate() возвращает объект ConstraintViolationList, который ведёт себя так же, как и массив ошибок. Каждая ошибка в коллекции - это объект ConstraintViolation, который содержит сообщение об ошибке в своём методе getMessage().

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.