Laravel 5.2重定向成功消息

Ste*_*fan 39 php laravel laravel-5.2

我正试图在laravel上找到成功的消息回到我的主页.

return redirect()->back()->withSuccess('IT WORKS!');
Run Code Online (Sandbox Code Playgroud)

由于某种原因,变量$ success在运行此代码后没有获得任何值.

我用来显示成功消息的代码:

@if (!empty($success))
    <h1>{{$success}}</h1>
@endif
Run Code Online (Sandbox Code Playgroud)

我已将home和newsletter页面添加到routes.php中的web中间件组,如下所示:

Route::group(['middleware' => 'web'], function () {
    Route::auth();

    Route::get('/', function () {
        return view('home');
    });

    Route::post('/newsletter/subscribe','NewsletterController@subscribe');
});
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这似乎不起作用?

Ale*_*nin 97

你应该删除web中间件routes.php.web手动添加中间件会导致Laravel 5.2.27及更高版本中的会话和请求相关问题.

如果没有帮助(仍然routes.php没有网络中间件),你可以尝试一些不同的方法:

return redirect()->back()->with('message', 'IT WORKS!');
Run Code Online (Sandbox Code Playgroud)

显示消息(如果存在):

@if(session()->has('message'))
    <div class="alert alert-success">
        {{ session()->get('message') }}
    </div>
@endif
Run Code Online (Sandbox Code Playgroud)

  • 我和我的朋友再次查看了您的代码,我对您的上一个解决方案做了一些错误,现在它可以工作了:-) (2认同)

Moh*_*loo 20

你可以用这个:

return redirect()->back()->withSuccess('IT WORKS!');
Run Code Online (Sandbox Code Playgroud)

并在您的视图中使用此:

@if(session('success'))
    <h1>{{session('success')}}</h1>
@endif
Run Code Online (Sandbox Code Playgroud)


小智 11

控制器:

return redirect()->route('subscriptions.index')->withSuccess(['Success Message here!']);
Run Code Online (Sandbox Code Playgroud)

刀刃

@if (session()->has('success'))
<div class="alert alert-success">
    @if(is_array(session('success')))
        <ul>
            @foreach (session('success') as $message)
                <li>{{ $message }}</li>
            @endforeach
        </ul>
    @else
        {{ session('success') }}
    @endif
</div>
@endif
Run Code Online (Sandbox Code Playgroud)

您始终可以将此部分另存为单独的刀片文件并轻松包含在内。例如:

<div class="row">
        <div class="col-md-6">
            @include('admin.system.success')
            <div class="box box-widget">
Run Code Online (Sandbox Code Playgroud)


joy*_*joy 6

您可以简单地使用back()函数进行重定向,无需使用redirect()->back()确保您使用的是 5.2 或高于 5.2 的版本。

您可以将您的代码替换为以下代码。

return back()->with('message', 'WORKS!');
Run Code Online (Sandbox Code Playgroud)

在视图文件中替换下面的代码。

@if(session()->has('message'))
    <div class="alert alert-success">
        {{ session()->get('message') }}
    </div>
@endif
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,您可以在这里阅读

back()只是一个辅助函数。它在做同样的事情redirect()->back()


Rad*_*dez 5

一种方法是在会话中发送消息,如下所示:

控制器:

return redirect()->back()->with('success', 'IT WORKS!');
Run Code Online (Sandbox Code Playgroud)

查看

@if (session()->has('success'))
    <h1>{{ session('success') }}</h1>
@endif
Run Code Online (Sandbox Code Playgroud)

另一种方法是创建会话并将文本直接放在视图中:

控制器

return redirect()->back()->with('success', true);
Run Code Online (Sandbox Code Playgroud)

查看

@if (session()->has('success'))
    <h1>IT WORKS!</h1>
@endif
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看完整文档:Redirecting With Flashed Session Data

我希望它非常有帮助,问候。