Php 在Laravel4中,如何在控制器中的所有方法之前运行代码?
我有一个带有REST方法(index..create..store..)的Content controller,我想在这些方法运行之前运行一些代码 我试图做的是使用一些与Content controller中的所有方法相关的数据为我的布局设置var:Php 在Laravel4中,如何在控制器中的所有方法之前运行代码?,php,laravel,controller,laravel-4,before-filter,Php,Laravel,Controller,Laravel 4,Before Filter,我有一个带有REST方法(index..create..store..)的Content controller,我想在这些方法运行之前运行一些代码 我试图做的是使用一些与Content controller中的所有方法相关的数据为我的布局设置var: $this->layout->myvar = 'some-data'; 我试着这样做: class ContentController extends BaseController { function __construct
$this->layout->myvar = 'some-data';
我试着这样做:
class ContentController extends BaseController {
function __construct() {
$this->layout->myvar= 'some-data';
}
..
但它似乎不起作用。
我收到“尝试分配非对象属性”错误。Laravel 5.1+
这已被弃用,取而代之的是中间件
拉维尔4号
您可以将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');
});
}
}
尝试在app/routes.php中共享
View::share('variable_name', 'value');
例:
将在所有视图中共享变量及其值谢谢,但当我尝试设置$this->layout->myvar=…时,仍然会出现错误“尝试分配非对象的属性”…我会遇到类似错误“使用()调用非对象的成员函数”-看起来$this->布局可能不是对象,但当我在控制器的其他函数中使用它时,一切都很好。@Brightside OK。如果它在您的操作中起作用,那么可能是由于在基本控制器的某个点设置了布局。尝试将
beforeFilter
功能替换为afterFilter
,看看是否适合您。当然,后过滤器将在操作之后运行。谢谢!是的,在我的基本控制器中设置布局。:)<代码>父项::u构造()??
View::share('name', 'Steve');