Controller Laravel 4中的嵌套控制器

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

我刚接触laravel4,在设置嵌套控制器时遇到问题。我在controllers目录中有一个“Admin”子目录,Admin controller驻留在其中。 我的管理员控制器在我的控制器目录中扩展一个“AdminController”。 我有这样的设置管理员控制器

<?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
PHP
namespace
,而不是
Controllers
目录的子文件夹

资料来源:

从路由器的角度来看,不管你把控制器放在哪里, 它只想知道在请求您注册的路由时需要调用哪个类

Route::get('/','HomeController@index');
应该可以工作,因为类装入器将在任何地方找到您的HomeController类

资料来源:

但是,您可能已经在controllers目录的根目录下有了一个
HomeController
,因此您将有一个类名冲突。我建议您将类重命名为
AdminHomeController

Route::get('/','AdminHomeController@index');

另外,在添加新类后,不要忘记运行
composer dump autoload
,以便更新类映射。

Route::get(“/”,“Admin”)\HomeController@index');
表示
Admin
PHP
namespace
,而不是
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');

});