Я не могу отобразить сообщения об ошибках в лезвии после того, как я получаю ошибку 422 - PullRequest
0 голосов
/ 09 ноября 2019

Я новичок во всей концепции обработки исключений или ошибок в laravel. В основном у меня есть запрос формы, который, когда правила не соблюдаются, показывает ошибку 422 в консоли, я хочу преобразовать это в сообщение об ошибке в блейде, но мне не удается.

Я уже пробовал это в Exception / Handle.php

public function render($request, Exception $exception)
    {
        return redirect()->back()->with('error', 'Invalid data');
//        return parent::render($request, $exception);
    }

Мое сообщение об ошибке в blade-сервере должно работать с этим:

@if(Session::has('error'))
    <div class="alert alert-error">
        {{ Session::get('error') }}
        @php
            Session::forget('error');
        @endphp
    </div>
@endif

Я знаю, что должен проверить коды ошибок или экземпляры перед возвратом, но я просто хочу получить этоработает. Я не могу ничего вернуть (нет ответа вообще). Одна мысль, которая работает, это return parent::render($request, $exception);, и она выводит сообщение об ошибке в консоли

Так что больше информации

Я не знаю, помогает ли это, но запрос сделаниз приложения Vue в контроллер, который принимает FormRequest в качестве параметра.

Кроме того, я не могу проверить код ошибки, я пытался

    public function render($request, Exception $exception)
    {
        if ($exception->getCode() === 422) {
            return response([], 356); //should throw 356 error
        }
        return parent::render($request, $exception); // instead this return fires and gives me 422 error
    }

компонент Vue

мой шаблон:

<template>
    <form class="form" @submit.prevent="submit()">
        <input type="text" class="form-control-plaintext textField"
               placeholder="Post a comment" required v-model="textField">
        <button :disabled="disabled" class="btn btn-success submit" type="submit">Post</button>
        <button :disabled="disabled" class="btn btn-dark submit" type="reset">Cancel</button>
    </form>
</template>

мой метод axios:

                    axios
                        .post('/comments', {
                            textField: this.textField,
                            id: this.id,
                            routeName: this.routename,
                        })
                        .then(response => {
                            this.name = '';
                            this.callReload(this.id);
                            this.textField = '';
                        })
                        .catch(function (error) {
                            console.log(error)
                        });

1 Ответ

1 голос
/ 10 ноября 2019

Вы, вероятно, захотите изменить функцию render, которая, как я полагаю, равна App\Exceptions\Handler.php, чтобы возвращать JSON для исключений, когда запрос был сделан с помощью JSON.

public function render($request, $exception)
{
  if ($request->isJson()) {
    return response()->json(['error' => 'Error Detail'], 422);
  }
}

. также нужно проверить тип exception, а не просто возвращать код состояния 422 для любого исключения JSON.

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