Laravel 4.0嵌套控制器

时间:2013-02-03 17:23:59

标签: routes laravel controllers laravel-4

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

  • 应用
    • 控制器
        • BaseController.php
      • 网站
        • WebsiteController.php

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

我尝试了以下内容

route.php的

应用程序/ route.php

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

for BaseController.php 应用程序/控制器/基站/ 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 ,

应用程序/控制器/网站/ WebsiteController.php

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

没有错误转储,我们无法确定,但您可以尝试这些:

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

$ php composer.phar dump-autoload

2)我不认为您需要使用use Controllers\Base\BaseController指令,因为默认情况下会自动加载models目录。由于您的控制器名称间距不同,因此不需要use指令。上面的'dump-autoload'应该可以解决这个问题

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

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

到此:

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

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