Dee*_*yal 0 php laravel laravel-4 laravel-routing
尝试运行我的控制器时出现以下错误
未找到控制器类
我在我的routes.php文件中有这个代码
Route::get('cms/create-page', 'AdminCMSController@create_page');
Route::post('cms/createpage','AdminCMSController@createpage');
Route::controller('cms','AdminCMSController');
Run Code Online (Sandbox Code Playgroud)
这是我的控制器中的代码
class AdminCMSController extends BaseController {
public function create_page() {
}
public function createpage() {
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
Luí*_*ruz 11
如果您没有controllers从原始位置移动目录(«project_root»/app/controllers/也就是说,您必须保证:
Laravel的自动加载有controller目录.导航到«project_root»/app/start/global.php.你需要这样的东西:
(...)
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
));
(...)
Run Code Online (Sandbox Code Playgroud)
请注意这一行app_path().'/controllers'.它必须存在.
此外,打开您的composer.json文件并验证是否存在以下行:
(...)
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
(...)
Run Code Online (Sandbox Code Playgroud)
确保你有线 app/controllers
如果您有这些行并且仍然收到相同的消息,请转到项目根目录并从命令行运行以下命令composer dumpautoload -o.
Laravel使用Composer,它是PHP的依赖管理工具.它还为所有项目类准备自动加载文件(请参阅composer docs).运行该composer dumpautoload命令时,它将在其中创建一些文件«project_root»/vendor/composer.
确保您可以AdminCMSController在文件中找到该类«project_root»/vendor/composer/autoload_classmap.php.你应该看到这样的东西:
'AdminCMSController' => $baseDir . '/app/controllers/AdminCMSController.php',
Run Code Online (Sandbox Code Playgroud)
如果您更改了controllers目录的默认位置,则必须执行以下任一步骤.但是,由于您没有在类中定义命名空间,因此这似乎不是您的问题所在:
使用PSR-0进行自动加载类.想象一下,您有以下文件夹结构:
/app
/commands
/config
/database
/Acme
/controllers
Run Code Online (Sandbox Code Playgroud)
你必须指定你的Acme文件夹composer.json,如下所示:
"autoload": {
"classmap": [
"app/commands",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"psr-0": {
"Acme": "app/"
}
},
Run Code Online (Sandbox Code Playgroud)
在此之后,您需要使用该命令更新composer autoload文件composer dumpautoload.
如果您不想使用PSR-0进行自动加载,则需要更改路径文件
Route::controller('cms','AdminCMSController');
Run Code Online (Sandbox Code Playgroud)
对此:
Route::controller('cms','Acme\controllers\AdminCMSController');
Run Code Online (Sandbox Code Playgroud)如果你使用PSR-0,你需要命名你的类,如下所示:
<?php namespace Acme\controllers;
class AdminCMSController extends BaseController {
(...)
}
Run Code Online (Sandbox Code Playgroud)
好奇Acme参考?我也是.请参阅维基百科.
| 归档时间: |
|
| 查看次数: |
7419 次 |
| 最近记录: |