1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】エラー:Target class [コントローラ名] does not exist.の発生原因と対処法。

Last updated at Posted at 2021-01-20

Laravelでページを表示したときに、以下エラーが出た場合の対処法。

Illuminate\Contracts\Container\BindingResolutionException
Target class [ContactController] does not exist.
http://127.0.0.1:8001/contact

ルーティングで指定されたコントローラが存在しない。というエラー。

▼ルーティング例

web.php
Route::get('contact', 'ContactController@index');

コントローラ名を省略表記してる場合に発生する。


##対処法

1. コントローラ名があっているか確認
2. RouteServiceProvider.phpのコメントアウトを解除する
3. 完全な名前空間を記載する

ファイル名(名前空間)が正しい場合は、No2を実行すれば解決する可能性が高い。

No.3でやっていることはNo.2と同じ。


##RouteServiceProvider.phpのコメントアウトを解除する Laravel7までは、`App\Http\Controllers\`が省略できたが、Laravel8からは省略するとエラーが表示されるようになった。

以下ファイルのコメントアウトを解除することで、Laravel7と同じ環境にできる。

app > Providers > RouteServiceProvider.php

image.png

解除するコメントアウト
//protected $namespace = 'App\\Http\\Controllers';
RouteServiceProvider.php
    protected $namespace = 'App\\Http\\Controllers';  //コメントアウトを解除

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
        });
    }

##完全な名前空間を記載する Laravel8のデフォルト状態でも、完全な名前空間を指定すれば問題なく機能する。

▼ルーティング例

web.php
Route::get('contact', 'ContactController@index');

 ↓修正

web.php
Route::get('contact', 'App\Http\Controllers\ContactController@index');

##まとめ コメントアウト解除が超簡単なのでおすすめ。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?