記事の目的
フラッシュメッセージについてlaravelとinertia視でを記載しています。
フラッシュメッセージとは
フラッシュメッセージとは、データの登録時や削除などのアクション実行後に簡単なメッセージを表示させる機能ことです。
分かりやすく言うと何か処理を行なった時に、”正しく処理が行われましたよ”という情報を表示させる機能がフラッシュメッセージとはになります。
ユーザ側の視点から考えると、登録を行うページにてきちんとアカウント情報を入力して登録ボタンを押したとしても、
本当に”ユーザー登録が行われた”という情報がなければ、心配になると思います。
そのためユーザが安心できるように出すメッセージと覚えておくといいかもしれないですね。
#laravelの場合
laravel公式レスポンス
上記の「フラッシュデータを保存するリダイレクト」に下記のように記載が書いてあります。
Route::post('/user/profile', function () {
// …
return redirect('dashboard')->with('status', 'Profile updated!');
});
with
というヘルパー関数を使用することで一時的にセッションにデータを保存できるのでview側でメッセージを取り出し表示することができます
下記では公式にてbladeの書き方で書いてあったのでそのまま記載しています。
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
#Inertiaの場合
Inertia公式共有データ
上記の「フラッシュメッセージ」に下記のように記載が書いてあります。
class HandleInertiaRequests extends Middleware
{
public function share(Request $request)
{
return array_merge(parent::share($request), [
'flash' => [
'message' => fn () => $request->session()->get('message')
],
]);
}
}
Middlewareの中でkeyがflushで値の方で連想配列でkey,valueの形で記載されていて、
sessionから取得する記載はlaravelのセッション情報取得の記載方法で取得できます。
laravel公式セッション
View側(Vue)で表示する際の記載
<template>
<main>
<header></header>
<content>
<div v-if="$page.props.flash.message" class="alert">
{{ $page.props.flash.message }}
</div>
<slot />
</content>
<footer></footer>
</main>
</template>