Доступ к ошибкам в Laravel - PullRequest
       1

Доступ к ошибкам в Laravel

0 голосов
/ 20 ноября 2018

У меня есть следующая функция для маршрута с именем /home:

public function home(){
  if(Session::has("user_id")){
        return view("home");
    }else{
        return view("welcome", [
            'error_message' => "Please log in to access that page!"
        ]);
    }
}

Затем в моем представлении welcome я показываю ошибку, подобную этой:

<div class="alert alert-danger alert-dismissible fade show" role="alert">
<p> {{ $error_message }} </p>
</div>

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

Разве я не могу сделать то же самое, используя экземпляр MessageBag Laravel?

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

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Пример 1

Для установки ошибки используйте

return redirect()->back()->withErrors('my message');

Для доступа к ошибкам в блейде используйте

@if ($errors->any())
<div class="alert alert-danger">
    <ul class="mb-0">
        @foreach($errors->all() as $error)
            <li>{!! $error !!}</li>
        @endforeach
    </ul>
</div>
@endif

И да, используйте перенаправление вместо того, чтобы возвращать разные виды на одном и том же маршруте, потому что это более понятно.

Пример 2 Но если вы хотите научиться этому нелегко, установите оповещения так:

session()->flash('alert', 'your message');

и получить к нему доступ, как это

<div class="alert alert-success"> {{ session('alert') }}</div>

Пример 3

если вы хотите использовать MessageBag, все, что вам нужно, это выдать специальное исключение

throw ValidationException::withMessages([
            'message' => ['my message here'],
        ])->status(400);

и получите к нему доступ, как показано в примере-1

0 голосов
/ 20 ноября 2018

Вы можете сделать что-то вроде этого

public function home(){
    if(Session::has("user_id")){
       return view("home");
    }else{
       return view("welcome")->with('error_message', 'Please log in to access the page');
    }
}

и

@if(!empty($error_message))
  <div class="alert alert-success"> {{ $error_message }}</div>
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...