Laravel 从帮助器类/函数渲染控制器布局($this->layout)
我正在构建一个以两种方式加载内容的服务: 通过标准http请求 通过ajax请求 我通过检查每个控制器方法中的请求来实现这一点,如下所示:Laravel 从帮助器类/函数渲染控制器布局($this->layout),laravel,laravel-4,Laravel,Laravel 4,我正在构建一个以两种方式加载内容的服务: 通过标准http请求 通过ajax请求 我通过检查每个控制器方法中的请求来实现这一点,如下所示: public function showIndex() { if (Request::ajax()) { // return ajax version of index } $this->layout->body = View::make('index'); } public static func
public function showIndex() {
if (Request::ajax())
{
// return ajax version of index
}
$this->layout->body = View::make('index');
}
public static function load($route, $data)
{
if (Request::ajax())
{
// return ajax version of index
}
$this->layout->body = View::make($route)->with($data);
}
问题是我必须在每个控制器方法中都这样做,这意味着大量重复的代码
所以,我想在某个地方创建一个函数来处理所有这些。我假设它看起来像这样:
public function showIndex() {
if (Request::ajax())
{
// return ajax version of index
}
$this->layout->body = View::make('index');
}
public static function load($route, $data)
{
if (Request::ajax())
{
// return ajax version of index
}
$this->layout->body = View::make($route)->with($data);
}
然后使用
Class::load('index', $data);
加载内容
但是我应该把这门课放在哪里呢?我需要访问$this,这样我才能渲染视图。您不能只使用自己的控制器吗 您可以创建BaseController并从中扩展所有控制器:
<?php
class BaseController extends Controller {
public function render($view, array $data = [])
{
$this->layout->body = View::make($view)->with($data);
}
}
class PostController extends BaseController {
public function showIndex()
{
if (Request::ajax())
{
// return ajax version of index
}
$this->render('index');
}
}
我现在觉得自己很愚蠢:非常感谢!这正是我想要的。