0

我尝试根据以下结构获取 Laravel 4 中的嵌套控制器:

  • 应用程序
    • 控制器
      • 根据
        • 基本控制器.php
      • 网站
        • 网站控制器.php

我想让网站路由与扩展 BaseController 的 WebsiteController 相关联。

我尝试了以下事情

对于 route.php ( app/route.php )

Route::resource('website', 'Controllers\Website\WebsiteController');

对于 BaseController.php ( app/controllers/base/BaseController.php )

use Illuminate\Routing\Controllers\Controller;
class BaseController extends Controller {

    protected function setupLayout(){
        if ( ! is_null($this->layout)){
            $this->layout = View::make($this->layout);
        }
    }
}

对于 WebsiteController.php ( app/controllers/website/WebsiteController.php )

use Controllers\Base\BaseController;
class WebsiteController extends BaseController {
    public function index(){
        return 'index';
    }
}

不幸的是,当我访问http://mywebsite.com/website时,它​​根本不起作用。

谢谢你。

4

1 回答 1

1

如果没有错误转储,我们无法确定,但您可以尝试以下方法:

1) 运行 composer 的 dump-autoload,让自动加载器知道新的类:

$ php composer.phar dump-autoload

2)我不相信你需要使用use Controllers\Base\BaseController指令,因为模型目录是默认自动加载的。由于您没有以不同的方式命名您的控制器,因此use不需要该指令。上面的“转储自动加载”应该可以解决问题

3)转储自动加载后,更改

Route::resource('website', 'Controllers\Website\WebsiteController');

对此:

Route::resource('website', 'WebsiteController');

除非您为新控制器定义不同的命名空间,否则不需要使用特定的类(例如“Controllers\Website\WebsiteController”)

于 2013-02-03T17:38:26.040 回答