ひとまず、下記コマンドでコンポーネントファイルを作る
sail artisan make:component Message
下記のファイルができるので、ここにコンポーネントを記載していくが、それは最後の③にて解説する
resources/views/components/message.blade.php
Table of Contents
①下記で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
もしメッセージを他の箇所でも使いたい場合は②のコードを別の箇所にも記述する。