【Laravel】パンくずの設定ミスによるエラー対処法|Missing required parameters for laravel-breadcrumbs

laravel-prograshi(プロぐらし) Laravel
記事内に広告が含まれていることがあります。
[PR]

Laravelでパンくずを設置するのに便利なlaravel-breadcrumbsで以下のようなエラーが出た場合の対処法。

・エラーの例
Missing required parameters for [Route: media.show] [URI: media/{media_slug}]. (View: /app/resources/views/layouts/base.blade.php)

原因

パラメータ付きのルートをパンくずで指定する時に、パラメータの値を渡さないために発生。

対処法

パンくずの設定でルート名を指定する時に必要なデータを渡す。

ポイントは2つ。

  1. functionの引数で変数を指定する。
  2. routeの指定でデータを渡す。

例えば、URIがmedia/{media_slug}のようにパラメータを必要とする場合に、パンくずの中でルート名を指定した場合は以下になる。

Route::get('media/{media_slug}', 'ServiceController@show')->name('media.show');
Breadcrumbs::for('media.show', function ($trail, $media_slug) {
    $trail->parent('media.index');
    $trail->push( $media_slug, route('media.show', [ 'media_slug' => $media_slug]));

function ($trail, $media_slug)

$trailはパンくずを表示するために必須の変数。第二引数でルートに渡すデータを指定する。

なお、上記例では、パンくずで表示する名前にもこの変数を指定している。

route('ルート名', [ 'キー名' => 値 ])

ルート名がパラメータを持つ場合は、Key-Valueの形式で第2引数でデータを渡す必要がある。

なお、キー名をパラメータ名と合わせる必要はない。(何でもいい)

タイトルとURLをコピーしました