使用Laravel返回通知闪存数据


Return notification flash data with 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>' : '' }}

这样的事情应该是可能的,对吧?

我不知道这是否对你有任何帮助,但这就是我一直在做的。

在控制器中,我们将向用户返回一个包含一些不同内容的页面。

对于错误,我们会像您一样处理。

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