【发布时间】:2013-08-23 05:46:20
【问题描述】:
由于路线复杂,我创建了一条动态路线,我的 routes.php 是 unamaneagle。
下面我使用 $controller = new $controller; 创建我的控制器然后 $controller->$action(); 初始化的控制器扩展了 BaseController,它有一个使用 $this->layout 设置的布局。 问题是当我手动创建这个控制器时,我无法访问 BaseController 上的布局对象来获取视图中的数据。
这一行
$this->layout->dataGroup = $data;
给我
Attempt to assign property of non-object
routes.php
Route::get('/{dcontroller}/view/{id}', function($dcontroller, $id) {
$controller = ucfirst($dcontroller).'Controller';
$action = 'getView';
$controller = new $controller;
return $controller->$action($id);
});
BaseController.php
class BaseController extends Controller {
protected $layout = 'layouts.master';
protected function layoutFnc($path, $data) {
// ********************* THIS FAILS!! *********************
$this->layout->dataGroup = $data;
// *********************
$this->layout->content = View::make($path, $data);
}
}
MyController.php
class MyController extends BaseController {
public function getView($id) {
$this->layoutFnc('layouts/test', aray('test', 'test2'));
}
}
【问题讨论】: