LoginSignup
2
3

【Laravel】フラッシュメッセージの書き方

Posted at

保存や作成などを実際に行った時に一目でわかりずらい時にフラッシュメッセージを表示させると

利用者は、登録された事が一目でわかるため快適にアプリケーションを利用できます。

今回は、画面が切り替わりながらデータを持ち越すということで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

@ifsession(’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を使用する事で数秒後に表示を消す事が可能になります。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3