升级Laravel 4.2到5.0,得到[ReflectionException]ClassApp\Http\Controllers\PagesController不存在
Upgrading Laravel 4.2 to 5.0, getting [ReflectionException] Class App\Http\Controllers\PagesController does not exist
我正在将我的项目从 laravel 4.2 更新到 laravel 5.0。但是,在我遇到这个错误并在过去 4 小时内一直试图解决它之后。
我在 4.2 版本上没有遇到这样的错误。我试过 composer dump-autoload
没有效果。
如更新指南中所述,我已将所有控制器原样移动,并将app/Providers/RouteServiceProvider.php
中的namespace
属性更改为null
。所以,我想我所有的控制器都在全局命名空间中,所以不需要在任何地方添加路径。
这是我的 composer.json:
"autoload": {
"classmap": [
"app/console/commands",
"app/Http/Controllers",
"app/models",
"database/migrations",
"database/seeds",
"tests/TestCase.php"
],
页面控制器:
<?php
class PagesController extends BaseController {
protected $layout = 'layouts.loggedout';
public function getIndex() {
$categories = Category::all();
$messages = Message::groupBy('receiver_id')
->select(['receiver_id', DB::raw("COUNT('receiver_id') AS total")])
->orderBy('total', 'DESC'.....
还有,这里是 BaseController。
<?php
class BaseController extends Controller {
//Setup the layout used by the controller.
protected function setupLayout(){
if(!is_null($this->layout)) {
$this->layout = View::make($this->layout);
}
}
}
在routes.php中,我调用控制器如下:
Route::get('/', array('as' => 'pages.index', 'uses' => 'PagesController@getIndex'));
任何人都请帮忙。在过去的几个小时里,我一直在摸不着头脑。
路由加载到 app/Providers/RouteServiceProvider.php 文件中。如果你在那里查看,你会看到这段代码:
$router->group(['namespace' => $this->namespace], function($router)
{
require app_path('Http/routes.php');
});
这会为任何路由添加命名空间,默认情况下是 App\Http\Controllers
,因此会出现错误消息。
您有两个选择:
- 将适当的命名空间添加到控制器的顶部。
- 加载群组 外部 的路由,因此不会自动添加命名空间。
我会选择选项 #1,因为它会让你在漫长的 运行.
中不再头疼。
我正在将我的项目从 laravel 4.2 更新到 laravel 5.0。但是,在我遇到这个错误并在过去 4 小时内一直试图解决它之后。
我在 4.2 版本上没有遇到这样的错误。我试过 composer dump-autoload
没有效果。
如更新指南中所述,我已将所有控制器原样移动,并将app/Providers/RouteServiceProvider.php
中的namespace
属性更改为null
。所以,我想我所有的控制器都在全局命名空间中,所以不需要在任何地方添加路径。
这是我的 composer.json:
"autoload": {
"classmap": [
"app/console/commands",
"app/Http/Controllers",
"app/models",
"database/migrations",
"database/seeds",
"tests/TestCase.php"
],
页面控制器:
<?php
class PagesController extends BaseController {
protected $layout = 'layouts.loggedout';
public function getIndex() {
$categories = Category::all();
$messages = Message::groupBy('receiver_id')
->select(['receiver_id', DB::raw("COUNT('receiver_id') AS total")])
->orderBy('total', 'DESC'.....
还有,这里是 BaseController。
<?php
class BaseController extends Controller {
//Setup the layout used by the controller.
protected function setupLayout(){
if(!is_null($this->layout)) {
$this->layout = View::make($this->layout);
}
}
}
在routes.php中,我调用控制器如下:
Route::get('/', array('as' => 'pages.index', 'uses' => 'PagesController@getIndex'));
任何人都请帮忙。在过去的几个小时里,我一直在摸不着头脑。
路由加载到 app/Providers/RouteServiceProvider.php 文件中。如果你在那里查看,你会看到这段代码:
$router->group(['namespace' => $this->namespace], function($router)
{
require app_path('Http/routes.php');
});
这会为任何路由添加命名空间,默认情况下是 App\Http\Controllers
,因此会出现错误消息。
您有两个选择:
- 将适当的命名空间添加到控制器的顶部。
- 加载群组 外部 的路由,因此不会自动添加命名空间。
我会选择选项 #1,因为它会让你在漫长的 运行.
中不再头疼。