ConectTheDots314
@ConectTheDots314

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Class "App\Http\Controllers\Controller" not found

解決したいこと

Class "App\Http\Controllers\Controller" not foundのエラーを解決したい

発生している問題・エラー

Class "App\Http\Controllers\Controller" not found

app/Http/Controllers/HomeController.php:7


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller

{

    /**

     * トップページ

     */

    public function top()

    {

      return view('front.page.top');

    }



    /**

     * aboutページ

     */

    public function about()

    {

      return view('front.page.about');

    }

}

?>

または、問題・エラーが起きている画像をここにドラッグアンドドロップ
https://gyazo.com/2c0107fc11db0914e53c4c85bd259340

Laravelアプリケーションで App\Http\Controllers\Controller クラスが見つからなかったことを示しています。これは、HomeControllerクラスが Controllerクラスを拡張しているため、Laravelが Controller クラスを見つけられなかったようです。

このエラーを解決するには、App\Http\Controllers\Controller クラスが正しくロードされていないのかもしれないのですが、そこがよくわかっていません。

もう一つの可能性は、HomeControllerクラスが正しいnamespaceにあるかどうかを確認しましたが

namespace App\Http\Controllers;

で問題はないようです。

どなたかアドバイスをいただけるとありがたいです。
よろしくお願いいたします。

0

3Answer

・以前自分も似たような現象がありまして、うる覚えで申し訳ないのですが、
app->
Providers->
「RouteServiceProvider.php」の
下記部分をコメントアウトしたら、通った記憶があります。
違ったらすいませんが、試してみてください。

php RouteServiceProvider.php
  public const HOME = '/home';

    /**
     * The controller namespace for the application.
     *
     * When present, controller route declarations will automatically be prefixed with this namespace.
     *
     * @var string|null
     */
  //******************* 下記のコードをコメントアウトする *****************
    // protected $namespace = 'App\\Http\\Controllers';
0Like

LaravelのオートロードはComposerによるものです。
まずはcomposer.jsonにオートロード設定がされているか確認しましょう。
変更していなければデフォルトで次のような設定がされてると思います。

例)Laravel 10.x より抜粋
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },

次に名前空間やディレクトリ構造に誤りがないか確認しましょう。
appディレクトリ以下は名前空間とディレクトリ構造を一致させることでオートロードされます。(詳しくは PSR-4: Autoloader
よくあるのはタイプミスをしていたり、名前空間とディレクトリ構造が一致していないケースです。

改善しなければcomposerコマンドでオートローダーを更新してみましょう。

php composer dump-autoload
0Like

This answer has been deleted for violation of our Terms of Service.

Your answer might help someone💌