如果你没有从原始位置移动控制器目录(这是«project_root»/ app / controllers /,你必须保证:
> Laravel的自动加载具有控制器目录.导航到«project_root»/app/start/global.php.你需要这样的东西:
(...)
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
));
(...)
注意这行app_path().’/ controllers’.它必须存在.
>此外,打开您的composer.json文件并验证是否存在以下行:
(...)
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
(...)
确保您拥有app / controllers行
如果您有这些行并且仍然收到相同的消息,请转到项目根目录并从命令行编写器dumpautoload -o运行以下命令.
Laravel适用于Composer,它是PHP的依赖管理工具.它还为所有项目类准备自动加载文件(see composer docs).当您运行composer dumpautoload命令时,它将在«project_root»/ vendor / composer中创建一些文件.
确保您可以在文件«project_root»/vendor/composer/autoload_classmap.php中找到类AdminCMSController.你应该看到这样的东西:
'AdminCMSController' => $baseDir . '/app/controllers/AdminCMSController.php',
如果更改了控制器目录的默认位置,则必须执行以下任一步骤.但是,由于您没有在类中定义命名空间,因此这似乎不是您的问题所在:
>使用PSR-0进行自动加载类.想象一下,您有以下文件夹结构:
/app
/commands
/config
/database
/Acme
/controllers
你必须在composer.json中指定Acme文件夹,如下所示:
"autoload": {
"classmap": [
"app/commands",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"psr-0": {
"Acme": "app/"
}
},
在此之后,您需要使用命令composer dumpautoload更新composer自动加载文件.
>如果您不想使用PSR-0进行自动加载,则需要更改路径文件
Route::controller('cms','AdminCMSController');
对此:
Route::controller('cms','Acme\controllers\AdminCMSController');
如果你使用PSR-0,你需要命名你的类,如下所示:
class AdminCMSController extends BaseController {
(...)
}