【问题标题】:Nested Controllers in Laravel 4Laravel 4 中的嵌套控制器
【发布时间】:2013-06-22 09:29:19
【问题描述】:

我是 laravel4 的新手,在设置嵌套控制器时遇到问题。我在管理员控制器所在的控制器目录中有一个“管理员”子目录。 我的管理控制器在我的控制器目录中扩展了一个“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');
    }
}

在我的 routes.php 文件中

 /** Admin Routes **/
Route::group(array('domain' => 'admin.vigap.local'), function()
{
    //Dashboard
    Route::get('/', 'Admin\HomeController@index');

});

但是当我导航到 http://admin.xyz.local 时,我收到一条错误消息,提示“找不到类 'Admin\View'”。 我做错了什么?

【问题讨论】:

    标签: controller laravel laravel-4


    【解决方案1】:

    你的控制器的工作方式没有任何问题,只是在 HomeController 中你使用了Admin 命名空间,然后在索引函数中你调用了View 类,但该类不是@ 的一部分987654323@ 命名空间,因此您会收到一条错误消息,指出找不到 Class Admin\View

    尝试做以下两件事之一:

    use View

    $this-&gt;layout-&gt;content = \View::make('admin.dashboard');

    (注意View前面的反斜杠)

    【讨论】:

      【解决方案2】:

      Route::get('/', 'Admin\HomeController@index'); 表示Admin PHP namespace,而不是Controllers 目录的子文件夹。

      来源:http://laravel.com/docs/controllers

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

      Route::get('/', 'HomeController@index'); 应该可以工作,因为类加载器会找到您的 HomeController 类,无论它在哪里。

      来源:http://forums.laravel.io/viewtopic.php?id=9917

      但是,您可能已经在控制器目录的根目录中有一个HomeController,因此您将遇到类名冲突。我建议你将你的班级重命名为AdminHomeController

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

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

      【讨论】:

      • +1 for composer dump-autoload ...你能告诉我我需要阅读什么才能更好地理解这一点吗,每次运行控制器时都需要运行它吗?所以控制器没有像在 Laravel 3 中那样注册?
      • 仅在添加新类(新控制器)时。 Composer 维护一个 php 文件列表和它们的类以便快速自动加载,因此当您添加新类时,您必须刷新 composer 的自动加载文件。我认为 Laravel 还会尝试根据控制器的名称和您在 laravel 配置中设置的路径来查找控制器。
      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 2013-01-18
      • 2019-12-12
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 2013-01-13
      相关资源
      最近更新 更多