Laravel: Как регистрировать ошибки при вводе запроса формы - PullRequest
0 голосов
/ 13 июня 2019

Я использую запрос формы Laravel для проверки некоторых сложных входных данных. Если есть ошибка, Laravel возвращает пользователя на предыдущую страницу (что нормально), но я также хочу, чтобы она регистрировала ошибки для меня. Как мне это сделать?

Я попытался использовать метод формы withValidator следующим образом, но получил ошибку «максимальный уровень вложенности достигнут».

public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if ($validator->fails()) {
            foreach($validator->errors()->all() as $error) {
                logger($error);
            }
        }
    });
}

Ответы [ 3 ]

1 голос
/ 13 июня 2019

Вызов $validator->fails() в обратном вызове after закончится бесконечным циклом, так как он вызывает $validator->after() в процессе.Он переоценивает и не использует предыдущий результат.

Используйте взамен $validator->errors() и убедитесь, что оно пустое.

0 голосов
/ 13 июня 2019

Как упомянуто в документации Laravel ,

Если параметры входящего запроса не соответствуют заданным правилам проверки, Laravel автоматически перенаправит пользователя обратно на прежнее место.

Кроме того, все ошибки проверки будут присутствовать в переменной $error.

Переменная $ errors связана спросмотр промежуточного программного обеспечения Illuminate \ View \ Middleware \ ShareErrorsFromSession , предоставляемого группой веб-промежуточного программного обеспечения.Когда применяется это промежуточное программное обеспечение, переменная $ errors всегда будет доступна в ваших представлениях, что позволяет легко предположить, что переменная $ errors всегда определена и может безопасно использоваться.

Чтобы просмотреть ошибки, вы можете добавить в свой вид следующий фрагмент кода, который возвращается при сбое проверки:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
0 голосов
/ 13 июня 2019

Лучший способ проверки на laravel - использовать Laravel Запрос

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