从Laravel 4.2升级到5.0,获取[ReflectionException]类AppHttpControll



我正在更新我的项目从laravel 4.2到laravel 5.0。但是,在我面对这个错误并在过去的4个小时里一直试图解决它之后。

我在4.2版本上没有遇到任何这样的错误。我试过作曲家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"
    ],

Pages控制器:

<?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');
});

为任何路由添加一个命名空间,默认为AppHttpControllers,因此会出现错误消息。

你有两个选择:

  1. 在控制器的顶部添加合适的命名空间。
  2. 在组的外部加载路由,所以命名空间不会自动添加。

我会选择选项1,因为从长远来看,这将为你省去麻烦。

最新更新