Вернуть данные флеш-уведомлений с помощью Laravel

В настоящее время я возвращаю ошибки следующим образом:

$validator = Validator::make(Input::all(), $rules);

if ($validator->fails()) {
return Redirect::to('login')->withErrors($validator); // <--
}

И отобразить их в шаблоне:

{{ isset($errors) ? $errors->first() : '' }}

Чего я хотел бы добиться, так это вернуть уведомление, которое может быть уведомлением «информация», «успех» или «ошибка». Что-то вроде этого:

return Redirect::to('login')->with('notification', 'error', $validator); //Error message
return Redirect::to('login')->with('notification', 'success', 'Logged in!'); //Success message

А затем отобразить их, что-то вроде этого:

{{ isset('$notification') ? '<div class="notification ' . $notification[1] . '">$notification[2]</div>' : '' }}

Нечто подобное должно быть возможно, верно?

0

Решение

Я не знаю, поможет ли это вам, но этим я и занимаюсь.

В контроллерах мы вернем пользователя на страницу с несколькими разными вещами.

За ошибки мы делаем это точно так же, как вы.

return Redirect::to('/whatever')->withErrors($validator);

А для успехов нечто подобное.

return Redirect::to('/whatever')->with('success', "Hooray, things are awesome!");

Однако в представлении об ошибках и уведомлениях вы просто увидите это.

@include('global.notifications')

который содержит следующее. (вам не нужно явно передавать $errors к мнению, его всегда есть.)

@if ($errors->any())
<div class="alert alert-danger">
@foreach($errors->all('<p>:message</p>') as $error)
{{ $error }}
@endforeach
</div>
@endif

@if (Session::has('success'))
<div class="alert alert-success">
<p>{{ Session::get('success') }}</p>
</div>
@endif
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]