Laravelのコンポーネントの呼び出し方をメモしておく

2025.01.28

ひとまず、下記コマンドでコンポーネントファイルを作る

sail artisan make:component Message

下記のファイルができるので、ここにコンポーネントを記載していくが、それは最後の③にて解説する

resources/views/components/message.blade.php

①下記でmessageをセッションとして定義

    public function store(Request $request)
    {
        $validated = $request->validate([
            'title' => 'required|max:20',
            'body' => 'required|max:400',
            ]);

        $validated['user_id'] = auth()->id();

        $post = Post::create($validated);
        $request->session()->flash('message', '保存しました');
        return redirect()->route('post.index');
    }

②コンポーネントにデータを渡す

上記のsession(‘message’) のセッションの値をbladeファイルのコンポーネント に渡す。

この時、①でセッションに保存されたメッセージ”session(‘message’)”の値が$message として自動的に格納される。

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

x-message はmessage.blade.phpの内容を表示するためのコンポーネント。

<x-コンポーネント名> のように定義することで、③のコンポーネントファイル(message.blade.php)を呼び出せる。

:message=”…”の部分が$messageになるので、:test= にすると$testという変数になる。

③表示するコンポーネントを定義

message.blade.php(コンポーネントファイル)で $message を使って表示

<!-- app/View/Components/Message.phpから受取った$messageを定義 -->
@if ($message)
<div class="p-4 m-2 rounded bg-green-100">
    {{$message}}
</div>
@endif

もしメッセージを他の箇所でも使いたい場合は②のコードを別の箇所にも記述する。

PIC UP