我尝试根据以下结构在Laravel 4中获取嵌套控制器:
我想让网站路由与扩展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时,它根本不起作用。
谢谢。
答案 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')