2016-04-01 20 views
1

Laravelでフォーム送信時に成功メッセージを表示しようとしています。セッション:: FlashがLaravelバージョン5.2.27で動作していません

ただし、動作しません。

コントローラーファイルの先頭にuse Session;を追加しました。ルートはミドルウェアにあり、config/session.phpの設定はデフォルトです。

私のコントローラ機能は問題なくデータベースに保存することができます:

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

マイルート:ここ

public function store(Request $request) 
    { 

     $post = new Post; 
     $post->title = $request->title; 
     $post->description = $request->description; 
     $post->slug = $request->slug; 
     $post->body = $request->body; 

     $post->save(); 

     Session::flash('success', 'SUCCESS MESSAGE GOES HERE'); 

     return redirect()->route('posts.show', $post->id); 

    } 

は私のテンプレートファイルです

Route::group(['middleware' => ['web']], function() { 
Route::get('/', '[email protected]'); 
Route::resource('posts','PostController'); 
}); 

を見るですセッションファイルには成功しません。私は正確に理由を理解することができません:

a:4:{s:6:"_token";s:40:"EntXIr9tkqAcKarDZhaNxKb6RfcFdFV9ZtF6W7kU";s:9:"_previous";a:1:{s:3:"url";s:30:"http://localhost:8000/posts/35";}s:5:"flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:9:"_sf2_meta";a:3:{s:1:"u";i:1459467699;s:1:"c";i:1459467699;s:1:"l";s:1:"0";}} 

誰かが私は問題が何であるか把握するのに役立ちますか?

+0

Laravel 5.1または5.2? –

+0

Laravel version 5.2.27 –

+0

新規インストールですか? routes.phpファイルには何がありますか? – scrubmx

答えて

0

"web"ミドルウェアを使用してセッションデータにアクセスしていることを確認してください。

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

    Route::get('foo', '[email protected]'); // session data should be available here 
}); 
+0

ええ、私はこれが問題だと思っています。[RouteServiceProvider]にミドルウェアを抽出した[最近の変更](https://github.com/laravel/laravel/commit/5c30c98db96459b4cc878d085490e4677b0b67ed) (https://github.com/laravel/laravel/blob/5c30c98db96459b4cc878d085490e4677b0b67ed/app/Providers/RouteServiceProvider.php#L54)。 – scrubmx

+0

@scrubmx更新いただきありがとうございます。 –

+0

こんにちは、はい、私のルートは、グループのミドルウェアにあります。私は数分前にこの情報を更新しました。 –

1

webミドルウェアは、もはや明示的にあなたのroutes.phpファイル内のルートに適用する必要はありません。それは、今静かにLaravelにthis changeごととして、app/Providers/RouteServiceProvider.php内のルートに適用された5.2.27以前は明示的にそうようにルートにwebミドルウェアを適用するために必要とされるであろう

Route::group(['middleware' => ['web']], function() { 
    Route::get('/', function() { 
     return view('welcome'); 
    }); 
}); 

上記今することができそのように実現しました:

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