laravel 中的 Composer dump-autoload 似乎不起作用

Composer dump-autoload in laravel seems not working

我试过自动加载我的新 classes,但它不起作用。我收到一条错误消息,说我的 class 控制器不存在。我在 ubuntu 环境中工作。 laravel 4.2

Composer.json

    "psr-0": {
        "Controllers": "app/",
        "Stuffs": "app/"
    }

app/Controllers/UserController.php

<?php

namespace Controllers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response;

class UserController extends BaseController
{
    public function index()
    {
        $stuffs = $this->stuffs->findAllForUser($this->user, 12);

        $this->view('user.profile', compact('stuffs'));
    }
}

app/routes.php

Route::get('user', [ 'as' => 'user.index', 'uses' => 'UserController@index' ]);

我试过这样做来自动加载那些 class: composer dump-autoload -o 甚至有 sudo 许可,但无法正常工作。我错过了什么吗?谢谢。

您必须在路由中使用完全限定名称引用控制器:

Route::get('user', [ 'as' => 'user.index', 'uses' => 'Controllers\UserController@index' ]);

如果您有很多这样的名称空间,您还可以使用 route group 来定义名称空间:

Route::group(array('namespace' => 'Controllers'), function(){
    Route::get('user', [ 'as' => 'user.index', 'uses' => 'UserController@index' ]);
});