我是 Laravel 命名空间的新手。
我正在尝试做这样的事情:
namespace App\Controllers; // when I remove this line, everything works fine... I need to include this
class HomeController extends BaseController {
protected $layout = "layouts.main";
public function __construct() {
// some stuff here
}
/**
* Home page.
* @return View
*/
public function getHome() {
// Show the page
$this->layout->content = View::make('home');
}
}
但我遇到了这个奇怪的错误,
Class HomeController does not exist
这是我的一些 composer.json 内容,
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/libraries",
"app/models",
"app/database/migrations",
"app/database/seeds",
]
},
我也执行过,
composer dump-autoload
当我在路由这样的东西时,
# Default
Route::get('/', array('as' => 'home', 'uses' => 'HomeController@getHome'));
最佳答案
这是可能发生此错误的一种常见情况:
想象一下,您正在使用该类定义路由:
Route::get('/home', 'HomeController@getIndex');
Laravel 核心将把该字符串(
'HomeController@getIndex'
)传递给路由类深处的一些方法,解析它,实例化 HomeController
, 并调用 getIndex
.该代码是否包含 use App\Controllers
指示?不太可能,因为这是您创建的内容。基本上,无论在哪里HomeController
类被使用(我不知道它在哪里),PHP 解释器不会知道该类来自哪里。解决方法是使用完全合格类(class)名称。这意味着在字符串中包含完整的命名空间,如下所示:
Route::get('/home', '\App\Controller\HomeController@getIndex');
现在,当 Laravel 尝试实例化该类时,它拥有找到它所需的一切。
我不确定这是否是问题所在——您需要向我们展示发生错误的代码——但这是一种可能性。
关于php - 找不到 Laravel 命名空间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27842121/