トップページ
Laravel学習サイトLaravelやるばい

目次

Laravelのビューでrouteを使ってリンクを作る時にパラメーターを渡す方法

みなさんこんにちは、あべ いさぢです。

Laravelでページにリンクをつけるのはよくありますがパラメーターを渡す方法を頻繁に忘れるのですぐ思い出せるようにこの記事を残します。

方法は2通りあると思います。

それぞれ解説します。


idを使う場合

ルーティングを下記にします。

Route::controller(WorkController::class)->group(function(){
    Route::get('/work/edit/{id}', 'edit')->name('work.edit');
});

2行目の「id」をビューに渡します。

コントローラーを下記にします。

public function edit($id)
{
  $work_content = Work::find($id);
  
  return view('work.edit', compact('work_content'));
}

1行目の「$id」はルーティングから渡します。

ビューを下記にします。

<a href="{{ route('work.edit', ['id' => $work_content]) }}">編集</a>

「['id' => $work_content]」のidはルーティングから渡ってきたidで$work_contentはコントローラーから渡ってきた$work_contentです。

これで該当する編集のページに入ることができます。


モデルを使う場合

Workモデルを使うとします。

Route::controller(WorkController::class)->group(function(){
    Route::get('/work/edit/{work}', 'edit')->name('work.edit');
});

2行目のworkはモデル名のWorkの最初の文字を小文字にしています。

コントローラーを下記にします。

public function edit(Work $work)
{
  return view('work.edit', compact('work'));
}

ビューを下記にします。

<a href="{{ route('work.edit', ['work' => $work]) }}">編集</a>

「['work' => $work]」のworkはルーティングから渡ってきたworkで$workはコントローラーから渡ってきた$workです。

戻る