1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

フラッシュメッセージ

Last updated at Posted at 2023-02-12

記事の目的

フラッシュメッセージについて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公式共有データ
上記の「フラッシュメッセージ」に下記のように記載が書いてあります。

app/Http/Middleware/HandleInertiaRequests.php
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>
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?