保存や作成などを実際に行った時に一目でわかりずらい時にフラッシュメッセージを表示させると
利用者は、登録された事が一目でわかるため快適にアプリケーションを利用できます。
今回は、画面が切り替わりながらデータを持ち越すということでSession
を使って表示させていきます。
書き方(複数あり)
①
session()
ヘルパ関数のflash()
メソッドでキー'message'
とバリュー'登録できました。'
と書く
session()->flash('message', '登録できました。');
②
useでセッションを読み込んでSession::flash
でキー'message'
とバリュー'登録できました。'
と書く
Session::flash('message','登録できました。');
③
redirect()
する際にwith()
メソッドでキー'message'
とバリュー'登録できました。'
と書く
redirect()->with('message', '登録できました。');
Viewで表示させる方法
上の①②③で渡したsessionのmessageをView側で表示するには以下の方法で表示できます。
@if(session('message'))
<div>
{{ session('message') }}
</div>
@endif
@if
でsession(’message’)
があったらsession('message')
でフラッシュメッセージを表示することができます。
実際に書いてみる
①
Controller
今回は登録する時の処理で書いてみます。比較的簡単な登録処理になっていると思います。
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:owners',
'password' => 'required|confirmed|confirmed|min:8',
]);
Owner::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
session()->flash('message', '登録が完了しました。');
return redirect()
->route('admin.owners.index');
}
session()->flash('message', '登録が完了しました。');
の箇所でmessageを指定
blade.php
@if(session('message'))
<div>
{{ session('message') }}
</div>
@endif
表示させる箇所は自由で大丈夫です。
②
Controller
今回は登録する時の処理で書いてみます。比較的簡単な登録処理になっていると思います。
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:owners',
'password' => 'required|confirmed|confirmed|min:8',
]);
Owner::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
Session::flash('message','登録が完了しました。');
return redirect()
->route('admin.owners.index');
}
Session::flash('message','登録が完了しました。');
の箇所でmessageを指定
blade.php
@if(session('message'))
<div>
{{ session('message') }}
</div>
@endif
表示させる箇所は自由で大丈夫です。
③
Controller
今回は登録する時の処理で書いてみます。比較的簡単な登録処理になっていると思います。
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:owners',
'password' => 'required|confirmed|confirmed|min:8',
]);
Owner::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
return redirect()
->route('admin.owners.index')
->whth('message', '登録が完了しました。');
}
->whth('message', '登録が完了しました。');
の箇所でmessageを指定
blade.php
@if(session('message'))
<div>
{{ session('message') }}
</div>
@endif
表示させる箇所は自由で大丈夫です。
備考
このままだとずっと表示されたままですがJavaScriptを使用する事で数秒後に表示を消す事が可能になります。