如何在Laravel 4中的控制器内部所有方法之前运行代码?

Bri*_*ide 2 php controller before-filter laravel laravel-4

我有内容控制器与REST方法(index..create..store ..),我想在运行任何这些方法之前运行一些代码.

我想要做的是为我的布局设置var,其中一些数据与Content controller中的所有方法相关:

$this->layout->myvar = 'some-data';
Run Code Online (Sandbox Code Playgroud)

我试着这样做:

class ContentController extends BaseController {
    function __construct() {
        $this->layout->myvar= 'some-data';
    }
..
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用.我得到"尝试分配非对象的属性"错误.

hap*_*ack 7

在Laravel 5之前你可以这样设置beforeFilter:

class ContentController extends BaseController {
    function __construct() {
        // this function will run before every action in the controller
        $this->beforeFilter(function()
        {
            // this will make the variable $myvar available in your view
            $this->layout->with('myvar', 'some-data');
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

...这已经在Laravel 5中被弃用,转而支持Middleware.