簡體   English   中英

Laravel: ReflectionException - Class App\\Http\\Controllers\\XXXX 不存在

[英]Laravel: ReflectionException - Class App\Http\Controllers\XXXX does not exist

我正在嘗試使用 Laravel 運行測試頁面。

當我使用 Controller 時,每次收到消息時:

Laravel: ReflectionException - Class App\\Http\\Controllers\\XXXX 不存在

有人知道問題出在哪里嗎?

這是我的路線/web.php:

   Route::get('/hi', 'HiController@index');

HiController.php(它在正確的文件夾結構中:app/Http/Controllers/

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HiController extends Controller
{
    public function index(){
      return "test";
    }
}

路由服務提供者.php

namespace App\Providers;

use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

class RouteServiceProvider extends ServiceProvider
{
    /**
     * This namespace is applied to your controller routes.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'App\Http\Controllers';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {
        //

        parent::boot();
    }

    /**
     * Define the routes for the application.
     *
     * @return void
     */
    public function map()
    {
        $this->mapApiRoutes();

        $this->mapWebRoutes();

        //
    }

    /**
     * Define the "web" routes for the application.
     *
     * These routes all receive session state, CSRF protection, etc.
     *
     * @return void
     */
    protected function mapWebRoutes()
    {
        Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));
    }

    /**
     * Define the "api" routes for the application.
     *
     * These routes are typically stateless.
     *
     * @return void
     */
    protected function mapApiRoutes()
    {
        Route::prefix('api')
             ->middleware('api')
             ->namespace($this->namespace)
             ->group(base_path('routes/api.php'));
    }
}

另外,當我在 routes/web.php 中使用此代碼時,它可以工作:

Route::get('/hi', function (){
  return "hi";
});

這是干凈的 Laravel 5.6 安裝,在 Windows 上,wamp64。

我也嘗試過“composer dump auto-load”和“php artisan config:clear”,但沒有任何效果。

先感謝您。

運行以下命令(假設您的應用名稱為app ):

php artisan app:name app

然后在您的控制器中也使用以下命名空間:

app\Http\Controllers\Controller

Q:如果是HiController,為什么是XXXX? 關於這個問題,如果它返回 hi,從技術上講,如果它是香草,它必須工作。 由於它在 windows 和 wamp64 上,我不認為文件權限是一件事,所以讓我們跳過它。

  1. 確保文件名確實正確
  2. 確保該文件確實存在於正確的目錄中
  3. 確保namespace App\\Http\\Controllers;namespace App\\Http\\Controllers;
  4. 添加這個用途,以防萬一:使用App\\Http\\Controllers\\Controller;
  5. 只是為了確定,確保在你的composer.json你有這個(你應該有,因為它是默認的):

     "autoload": { "psr-4": { "App\\\\": "app/" } }
  6. 如果都不起作用,請嘗試創建一個新的控制器php artisan make:controller SomeController並嘗試使用這個php artisan make:controller SomeController

嘗試了每一個選項,唯一對我有用的是重新啟動虛擬機,ngingx 或 laravel 緩存了一些東西或類似的東西會引發這個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM