🗂

Laravel Controller からのセッション

2023/07/07に公開

Laravelでコントローラーからセッションを送り、セッションによって表示の色を変えたいと思ったので色々調べてみました。

 public function update(Request $request, string $id)
    {
        $owner = Owner::findOrFail($id);
        $owner->name = $request->name;
        $owner->email = $request->email;
        $owner->password = Hash::make($request->password);
        $owner->save();

        return redirect()->route('admin.owners.index')
        ->with(
            ['message'=>'オーナー情報を更新致しました。',
            'status'=>'info']
        );

    }

https://readouble.com/laravel/8.x/ja/session.html
https://readouble.com/laravel/9.x/ja/redirects.html
調べてみたらwithメソッドで一時的なフラッシュメッセージが作れたので、こちらを使って表示を分けていこうと思います。
コントローラーで実際にmessageとstatusで表示を分けれるようにしました。

 <x-flash-message status="session('status')" />

viewファイルでさらに分別

@props(['status' => 'info'])

@php
if(session('status') == 'info'){
  $bgColor ='bg-blue-300';
}
if(session('status') == 'alert'){
  $bgColor ='bg-red-500';
}
@endphp

@if(session('message'))
  <div class="{{$bgColor}} w-1/2 mx-auto p-2 text-white">
      {{session('message')}}
  </div>
@endif

こちらでsessionでstatusの値によってバックグラウンドカラーを変更できるようになりました。

Discussion