Laravel ReflectionException:类不存在

时间:2018-07-07 21:59:55

标签: laravel laravel-5

这让我发疯,但也许(或者可能)我只是想念一些东西。

我正在尝试安装GrafiteCMS,并且已经遵循docs(复杂设置)的要求。管理区域等工作正常,但是我无法使文件夹Controllers/Cms中的控制器(通过vendor:publish生成)正常工作。我收到错误消息:

  

Cms \ PagesController类不存在

控制器具有以下名称空间,并被命名为PagesController

namespace App\Http\Controllers\Cms;

自动加载类映射也看起来正确:

'App\\Http\\Controllers\\Cms\\PagesController' => $baseDir . '/app/Http/Controllers/Cms/PagesController.php',

那我想念什么?它与Cms目录中的所有控制器有关。

2 个答案:

答案 0 :(得分:0)

我解决了。他们应该更新代码。 对于有相同问题的任何人:

他们正在使用错误的命名空间Cms发布cms-routes文件。它必须是完整的命名空间App\Http\Controllers\Cms。因此,编辑您的cms-routes如下所示:

Route::group(['namespace' => 'App\Http\Controllers\Cms', 'middleware' => ['cms-language', 'cms-analytics']], function () {
    Route::get('', 'PagesController@home');
    Route::get('pages', 'PagesController@all');
    Route::get('page/{url}', 'PagesController@show');
    Route::get('p/{url}', 'PagesController@show');

    Route::get('gallery', 'GalleryController@all');
    Route::get('gallery/{tag}', 'GalleryController@show');

    Route::get('blog', 'BlogController@all');
    Route::get('blog/{url}', 'BlogController@show');
    Route::get('blog/tags/{tag}', 'BlogController@tag');

    Route::get('faqs', 'FaqController@all');

    Route::get('events', 'EventsController@calendar');
    Route::get('events/{month}', 'EventsController@calendar');
    Route::get('events/all', 'EventsController@all');
    Route::get('events/date/{date}', 'EventsController@date');
    Route::get('events/event/{id}', 'EventsController@show');
});

答案 1 :(得分:0)

RouteServiceProvider代码必须是this。

protected function mapWebRoutes()
{
    Route::middleware('web')
         ->namespace($this->namespace)
         ->group(function() { 
        require base_path('routes/web.php');
        require base_path('routes/cms.php');  // if it is not exists error occurs 
    });
}

检查