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

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

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

今回は、画面が切り替わりながらデータを持ち越すということで`Session`を使って表示させていきます。

## 書き方（複数あり）

### **①**

`session()`ヘルパ関数の`flash()`メソッドでキー`'message'`とバリュー`'登録できました。'`と書く

```php
session()->flash('message', '登録できました。');
```

### ②

useでセッションを読み込んで`Session::flash`でキー`'message'`とバリュー`'登録できました。'`と書く

```php
Session::flash('message','登録できました。');
```

### ③

`redirect()`する際に`with()`メソッドでキー`'message'`とバリュー`'登録できました。'`と書く

```php
redirect()->with('message', '登録できました。');
```

## Viewで表示させる方法

上の①②③で渡したsessionのmessageをView側で表示するには以下の方法で表示できます。

```php
@if(session('message'))
	<div>
		{{ session('message') }}
	</div>
@endif
```

`@if`で`session(’message’)`があったら`session('message')`でフラッシュメッセージを表示することができます。

## 実際に書いてみる

### ①

> Controller
> 

今回は登録する時の処理で書いてみます。比較的簡単な登録処理になっていると思います。

```php
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
> 

```php
@if(session('message'))
	<div>
		{{ session('message') }}
	</div>
@endif
```

表示させる箇所は自由で大丈夫です。

### ②

> Controller
> 

今回は登録する時の処理で書いてみます。比較的簡単な登録処理になっていると思います。

```php
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
> 

```php
@if(session('message'))
	<div>
		{{ session('message') }}
	</div>
@endif
```

表示させる箇所は自由で大丈夫です。

### ③

> Controller
> 

今回は登録する時の処理で書いてみます。比較的簡単な登録処理になっていると思います。

```php
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
> 

```php
@if(session('message'))
	<div>
		{{ session('message') }}
	</div>
@endif
```

表示させる箇所は自由で大丈夫です。

## 備考

このままだとずっと表示されたままですがJavaScriptを使用する事で数秒後に表示を消す事が可能になります。