gpt4 book ai didi

php - Laravel 4 Controller 之前和之后的功能

转载 作者:可可西里 更新时间:2023-11-01 00:14:50 24 4
gpt4 key购买 nike

我有一个基础 Controller ,所有其他 Controller 都将扩展它。我想做一些主题和验证,并在其 Before 函数中加载小部件。

我知道我可以使用 Routes 过滤器来处理这个问题,但我不想将我的代码放在路由器中我希望每个 Controller 操作首先执行“Before function”,然后执行这个 Base Controller 的“After function”,比如 Laravel 3.

class FrontController extends \BaseController {
protected $layout = 'home.index';
public function __construct() {
}

public function before() {
// Do some theme and validation
}


public function __call($method, $parameters) {

return Response::abort('404');
}

更新:我正在寻找一种方法,例如,我可以根据页面配置更改主题或在主 Controller 完成其功能后加载侧边栏小部件,并且...因此我想访问 $this。

最佳答案

根据documentation ,您可以通过两种方式在 Controller 中定义 before 和 after 方法。

使用过滤器名称:

$this->beforeFilter('auth');
$this->afterFilter('something_else');

或闭包:

$this->beforeFilter(function() {
// code
});

这些将进入您的基本 Controller 的 __construct 方法。

这是一个完整的例子:

class BaseController extends Controller {

public function __construct()
{
// Always run csrf protection before the request when posting
$this->beforeFilter('csrf', array('on' => 'post'));

// Here's something that happens after the request
$this->afterFilter(function() {
// something
});
}

/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if ( ! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}

}

关于php - Laravel 4 Controller 之前和之后的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com