こんにちは。もっと公式情報を沢山ください。只野です。
「Livewire」の情報少なすぎわろた。という感じでメモ書きです。
本当に小さいところに躓いている私です。
今回嵌ったのは「Livewire」のコンポーネント内のメソッドを、Web画面から実行するときに引数を渡す方法です。
1:同一画面内でのメソッド引数!
「Livewire」用のPHPソースには単純に引数を設定するだけです。
public function save($id) { $model = User::findOrFail($id); // 保存処理… }
実行元では下記のように、メソッド名に引数を設定するだけ。簡単ですね。これだけの情報が見つからなかったのよ。ふふ。
<button type="button" wire:click="save(1)">
2:別画面から呼び出した際の引数!
これは公式ページにも記載があります。
まず「{ドキュメントルート}\toutes\web.php」に引数で渡す内容を含めたルーティング設定を行います。
/** * ユーザールーティング設定 */ Route::prefix('user')->name('user.')->group(function() { //■検索 Route::get('search/{mode?}/{value?}', SearchUser::class)->name('search'); //■登録 Route::get('create', CreateUser::class)->name('create'); //■更新 Route::get('update/{id}', UpdateUser::class)->name('update'); });
重要なのは「Route::get(‘update/{id}’, UpdateUser::class)->name(‘update’);」ここの「‘update/{id}’」これ。ここで波括弧で括られているのが渡すパラメータ名になります。この指定方法だとパラメータは必須!
ここで「Route::get(‘search/{mode?}/{value?}’, SearchUser::class)->name(‘search’);」のようにパラメータ名の後ろにクエスチョンを付けると「‘search/{mode?}/{value?}’」任意パラメータにできる。
別画面から「Livewire」のコンポーネントを呼び出す場合、「Livewire」の機能として必ず「mount」メソッドが実行されます。
このメソッドの引数にルーティングで指定したパラメータ名と同一の引数を追加します。
public function mount($id) { $model = User::findOrFail($id); // 初期化処理… }
呼び出し時は下記のようにルーティングされている内容を実行します。
<a href="{{route('user.update', $user->id)}}">ユーザー更新</a>
第一引数はルーティング名、第二引数以降は指定したパラメータに必要な値を設定します。
パラメータが複数ある場合は下記のように指定します。
<a href="{{route('user.search', ['mode' => 'admin', 'value' => 'abc'])}}">管理者検索モード</a>
第二引数を連想配列指定で、ルーティングで指定したパラメータ名に対して値を設定します。
分かってしまえばなんてことはない。
本日はこの辺で