Laravel 5.2重定向成功消息

问题描述 投票:29回答:6

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

return redirect()->back()->withSuccess('IT WORKS!');

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

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

@if (!empty($success))
    <h1>{{$success}}</h1>
@endif

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

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

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

    Route::post('/newsletter/subscribe','NewsletterController@subscribe');
});

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

php laravel laravel-5.2
6个回答
80
投票

你应该从web中删除routes.php中间件。手动添加web中间件导致session and request related problems in Laravel 5.2.27 and higher

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

return redirect()->back()->with('message', 'IT WORKS!');

显示消息(如果存在):

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

18
投票

你可以用这个:

return redirect()->back()->withSuccess('IT WORKS!');

并在您的视图中使用此:

@if(session('success'))
    <h1>{{session('success')}}</h1>
@endif

3
投票

所有这些都是正确的,但试试这个直的单线:

{{session()->has('message') ? session()->get('message') : ''}}


3
投票

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

控制器:

return redirect()->back()->with('success', 'IT WORKS!');

视图:

@if (session()->has('success'))
    <h1>{{ session('success') }}</h1>
@endif

其他方法是创建会话并直接将文本放在视图中:

控制器:

return redirect()->back()->with('success', true);

视图:

@if (session()->has('success'))
    <h1>IT WORKS!</h1>
@endif

你可以在这里查看完整的文档:Redirecting With Flashed Session Data

我希望这是非常有帮助的,问候。


3
投票

控制器:

return redirect()->route('subscriptions.index')->withSuccess(['Success Message here!']);

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

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

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

1
投票

在控制器中

return redirect()->route('company')->with('update', 'Content has been updated successfully!');

在视野中

@if (session('update'))
  <div class="alert alert-success alert-dismissable custom-success-box" style="margin: 15px;">
     <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
     <strong> {{ session('update') }} </strong>
  </div>
@endif

1
投票

您可以使用laravel MessageBag将我们自己的消息添加到现有消息中。

要使用MessageBag,您需要使用:

use Illuminate\Support\MessageBag;

在控制器中:

MessageBag $message_bag

$message_bag->add('message', trans('auth.confirmation-success'));

return redirect('login')->withSuccess($message_bag);

希望它会帮助一些人。

  • 普通
© www.soinside.com 2019 - 2024. All rights reserved.