Unresolvable dependency resolving [Parameter #0 [ {$YYYY} ]] in class App\View\Components\{XXXX}

Laravelにて、Componentsクラスを記述している際のエラー解決方法を解説していきます。このようなエラーが発生しました。

viewへcollectionのデータを渡す際に発生したので、、まさか、、、componentでcollection渡せない…??? と思ってしまいましたが、そういった問題ではなかったです。 下記解説です。

■問題点①

調べていくとキャッシュがクリア出来ていない場合に、発生するエラー表示のようです。

■問題点①の解決策

php artisan view:clear 

■問題点②

上記のキャッシュクリアしても、エラーが変わらず、消えない…という場合。
1つ疑って頂きたいのは、

変数名に _ アンダーバーを利用していませんか??

例えば、$category_channels このようにアンダーバーを利用している場合は変更が必要です。

■問題点②の解決策

<x-ranking :category-channels=”$category_channels”>で複数単語を用いて変数を記述するさいには、””_””を利用せずに、””-“”記述する必要があるようです。

app>resources>ranking.blade.php
////

<x-ranking :category-channels="$category_channels" />

////

// Errorのパターン:<x-ranking :category_channels=”$category_channels” />

これを、View>Componetsで受け取る際には、キャメルケースで受けることが出来ます。

app>View>Componets>Ranking.php
<?php
namespace App\View\Components;
use Illuminate\View\Component;

class Ranking extends Component
{

    /**
     * ランキング掲載のチャンネルデータ
     */
    public $category_channels;

    public function __construct($categoryChannels)
    {
        $this->category_channels = $categoryChannels;
    }

    public function render()
    {
        return view('components.ranking');
    }
}

参考記事

https://laracasts.com/discuss/channels/laravel/errorexception-unresolvable-dependency-resolving-parameter-0-required-auth-profile-in-class-appviewcomponentsuserprofileprofileinfo-view-claragonwwwaclresourcesviewsuserprofileprofile-pagebladephp-httpacltestauth-profile1edit

Componetsの使い方については下記で解説しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です