ルートが複雑なため、動的ルートを作成しました。routes.php は unamaneagle でした。
以下では、$controller = new $controller; を使用してコントローラーを作成します。次に $controller->$action(); 初期化されたコントローラーは、$this->layout で設定されたレイアウトを持つ BaseController を拡張します。問題は、このコントローラーを手動で作成すると、BaseController のレイアウト オブジェクトにアクセスしてビュー内のデータを取得できないことです。
この行
$this->layout->dataGroup = $data;
私にくれます
Attempt to assign property of non-object
ルート.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'));
}
}