Controller Laravel 4中的嵌套控制器
我刚接触laravel4,在设置嵌套控制器时遇到问题。我在controllers目录中有一个“Admin”子目录,Admin controller驻留在其中。 我的管理员控制器在我的控制器目录中扩展一个“AdminController”。 我有这样的设置管理员控制器Controller Laravel 4中的嵌套控制器,controller,laravel,laravel-4,Controller,Laravel,Laravel 4,我刚接触laravel4,在设置嵌套控制器时遇到问题。我在controllers目录中有一个“Admin”子目录,Admin controller驻留在其中。 我的管理员控制器在我的控制器目录中扩展一个“AdminController”。 我有这样的设置管理员控制器 <?php namespace Admin; use AdminController; class HomeController extends AdminController { public $layout
<?php
namespace Admin;
use AdminController;
class HomeController extends AdminController {
public $layout = 'admin.layouts.master';
public function index() {
$this->layout->content = View::make('admin.dashboard');
}
}
但当我导航到时,会出现一个错误,显示“未找到类‘Admin\View’”。
我做错了什么?Route::get(“/”,“Admin”)\HomeController@index');
表示Admin
PHPnamespace
,而不是Controllers
目录的子文件夹
资料来源:
从路由器的角度来看,不管你把控制器放在哪里,
它只想知道在请求您注册的路由时需要调用哪个类
Route::get('/','HomeController@index');
应该可以工作,因为类装入器将在任何地方找到您的HomeController类
资料来源:
但是,您可能已经在controllers目录的根目录下有了一个HomeController
,因此您将有一个类名冲突。我建议您将类重命名为AdminHomeController
Route::get('/','AdminHomeController@index');代码>
另外,在添加新类后,不要忘记运行composer dump autoload
,以便更新类映射。Route::get(“/”,“Admin”)\HomeController@index');
表示Admin
PHPnamespace
,而不是Controllers
目录的子文件夹
资料来源:
从路由器的角度来看,不管你把控制器放在哪里,
它只想知道在请求您注册的路由时需要调用哪个类
Route::get('/','HomeController@index');
应该可以工作,因为类装入器将在任何地方找到您的HomeController类
资料来源:
但是,您可能已经在controllers目录的根目录下有了一个HomeController
,因此您将有一个类名冲突。我建议您将类重命名为AdminHomeController
Route::get('/','AdminHomeController@index');代码>
另外,在添加新类后,不要忘记运行composer dump autoload
,以便更新类映射。控制器的工作方式没有问题,只是在HomeController中使用Admin
名称空间,然后在index函数中调用View
类,但是该类不是Admin
名称空间的一部分,因此您将得到一个错误,说明找不到class Admin\View
尝试执行以下两项操作之一:
使用视图
或
$this->layout->content=\View::make('admin.dashboard')代码>
(注意视图前面的反斜杠)控制器的工作方式没有问题,只是在HomeController中使用Admin
命名空间,然后在index函数中调用视图
类,但是该类不是Admin
名称空间的一部分,因此您将得到一个错误,说明找不到class Admin\View
尝试执行以下两项操作之一:
使用视图
或
$this->layout->content=\View::make('admin.dashboard')代码>
(注意视图前面的反斜杠)+1用于编写器转储自动加载。。。你能告诉我,为了更好地理解这一点,我需要读些什么吗?我是否需要每次运行控制器时都运行这个?因此,控制器没有像在Laravel3中那样注册?只有在添加新类(新控制器)时才注册。Composer维护一个php文件及其类的列表,以便快速自动加载,因此当您添加新类时,必须刷新Composer的自动加载文件。我认为Laravel也会尝试根据控制器的名称和您在Laravel配置中设置的路径来查找控制器。composer dump autoload的+1。。。你能告诉我,为了更好地理解这一点,我需要读些什么吗?我是否需要每次运行控制器时都运行这个?因此,控制器没有像在Laravel3中那样注册?只有在添加新类(新控制器)时才注册。Composer维护一个php文件及其类的列表,以便快速自动加载,因此当您添加新类时,必须刷新Composer的自动加载文件。我认为Laravel也会尝试根据控制器的名称和您在Laravel配置中设置的路径来查找控制器。
/** Admin Routes **/
Route::group(array('domain' => 'admin.vigap.local'), function()
{
//Dashboard
Route::get('/', 'Admin\HomeController@index');
});