Как я могу получить ключ массива => errorMessage от $ нарушения.Symfony 4 - PullRequest
0 голосов
/ 16 января 2019

Вот мой код

 $arParams = $request->all();

    $validator = Validation::createValidator();

    $groups = new GroupSequence(['Default', 'custom']);

    $constraint = new Assert\Collection([
        'name' => new Assert\Length(['min' => 2]),
        'city' => new Assert\Length(['min' => 2]),
        'email' => new Assert\Email(),
        'phone' => new Assert\Length(['min' => 18]),
        'message' => new Assert\NotNull()
    ]);

    $violations = $validator->validate($arParams, $constraint, $groups);

Если я получаю некоторые ошибки, как я могу получить массив, как ['name' => недостаточно символов, 'email' => неправильный email]?

Я пытался использовать foreach на $ нарушениях, но не могу найти все методы его элементов. Я нашел только $ нарушение-> getMessage () и -> getCode ()

1 Ответ

0 голосов
/ 16 января 2019

Я рекомендую вам прочитать эту статью https://symfony.com/doc/current/validation.html

Если проверка не пройдена, возвращается непустой список ошибок (класс ConstraintViolationList ).

Таким образом, вы можете получить свой список следующим образом:

if ($violations->count() > 0) {
    $formatedViolationList = [];
        for ($i = 0; $i < $violations->count(); $i++) {
            $violation = $violations->get($i);
            $formatedViolationList[] = array($violation->getPropertyPath() => $violation->getMessage());
        }
}

Пара объяснений. Мы используем методы из нарушения api count() или получаем ряд нарушений, а после цикла for мы используем get($i) для получения каждого нарушения по индексу. После того, как мы используем getPropertyPath() для получения пути (имя вашей собственности) и getMessage() для получения сообщения.

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