Laravel会话Flash消息不起作用

时间:2016-01-07 06:47:56

标签: php session laravel-5

会话消息无法正常工作我尝试了此代码,许多修复程序在线提供 这里是我的商店功能`

public function store(Request $request)
    {
        // dd($request->all());
        $this->validate($request, [
            'name'      =>'required',
            'username'  =>'required',
            'email'     =>'required',
            'address'   =>'required',
            'likes'     =>'required',
            'gender'        =>'required'

        ]);

        $input = $request->all();

        Contacts::create($input);

        Session::put('flash_message', 'Task successfully added!');
        return redirect()->back();
    }

通过此代码检索

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

8 个答案:

答案 0 :(得分:6)

我用laravel 5.2解决了这个问题。

我有这样的路线

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

所以删除了网络中间件

Route::group(['middleware' => ['auth']], function () {
.......
}

并开始工作

分析:默认情况下,Laravel添加Web中间件。 通过php artisan route检查:列表显示web,web,auth。

所以通过再次定义它可以为web中间件重定向两次。

答案 1 :(得分:2)

我解决了laravel 5.2的问题。

我在这里有所有路线:

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

我将其删除,因为当我在名称中间件列中使用命令php artisan route:list时,“web”显示时间:web,web。

如果你有AUTH替换为:

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

我也删除了重复的路线(在路线 .php中)。现在我只有:

Route::resource('/publicaciones', 'PublicacionesController');

我的控制器

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

我的观点

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

答案 2 :(得分:1)

我已解决laravel 6.x的问题

我将\Illuminate\Session\Middleware\StartSession::class\Illuminate\View\Middleware\ShareErrorsFromSession::class从网络$middlewareGroups移至 $middleware 中的app\Http\Kernel.php,一切都按预期开始

答案 3 :(得分:0)

是否包含以下命名空间

use Session;

而不是以下代码

 Session::put('flash_message', 'Task successfully added!'); 

使用

 Session::flash('flash_message', 'Task successfully added!');

而不是

return redirect()->back();

尝试使用

 return redirect()->route('your route');

答案 4 :(得分:0)

这个论坛有点晚了。我遇到了这个问题,我去过不同的站点,寻找正确的解决方案,但没有一个可行。这是我的情况,我正在使用v6.0,然后将路由放入routes\api.php中。

我认为将route放在正确的位置或文件上是有区别的,无法解释更多。

这是我的解决方法,我将路线从routes\api.php转移到routes\web.php,经过大量研究后,这就是现在成功显示即显消息的地方。

答案 5 :(得分:0)

尝试此代码

Session::flash('flash_message', 'Task successfully added!');
Session::save();
return redirect()->back();

这对我有用

答案 6 :(得分:0)

如果“会话”无法在刀片视图中显示错误,这将起作用。

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

答案 7 :(得分:0)

当验证失败时,不再执行进一步的代码并再次加载上一页。这就是会话消息不起作用的原因。为了检查任何验证错误,请使用刀片文件顶部的以下代码片段。

@if ($errors->any())
  @foreach ($errors->all() as $error)
    <div class="alert alert-danger alert-block">
      <button type="button" class="close" data-dismiss="alert">×</button>
      <strong>{{ $error }}</strong>
    </div>
  @endforeach
@endif