Laravel 5.2重定向成功消息

时间:2016-05-22 15:26:50

标签: php laravel laravel-5.2

我正试图在laravel上将成功信息发回我的主页。

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

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

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

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

我已将家庭和简报页面添加到routes.php中的Web中间件组,如下所示:

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

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

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

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

9 个答案:

答案 0 :(得分:74)

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

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

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

显示消息是否存在:

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

答案 1 :(得分:18)

你可以用这个:

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

并在您的视图中使用此内容:

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

答案 2 :(得分:3)

以上所有内容都是正确的,但请尝试直接单行:

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

答案 3 :(得分: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

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

答案 4 :(得分:3)

您只需使用back()函数即可进行重定向,而无需使用redirect()->back(),请确保您使用的是5.2或更高版本的5.2。

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

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

在视图文件中,替换以下代码。

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

有关更多详细信息,您可以阅读here

back()只是一个辅助功能。它的作用与redirect()->back()

答案 5 :(得分:2)

控制器:

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">

答案 6 :(得分: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

答案 7 :(得分: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);

希望这会有所帮助。

  • Adi

答案 8 :(得分:0)

在控制器中:

 `return redirect()->route('car.index')->withSuccess('Bein ajoute')`;

在视图中

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