Laravel 4魔术方法-在控制器中调用替换
我正在构建一个权限系统,我需要对每个控制器的每个方法都有粒度,所以我想在我的基本控制器上使用_call magic方法来实现这一点,如下所示:Laravel 4魔术方法-在控制器中调用替换,laravel,laravel-4,Laravel,Laravel 4,我正在构建一个权限系统,我需要对每个控制器的每个方法都有粒度,所以我想在我的基本控制器上使用_call magic方法来实现这一点,如下所示: public function __call($name, $args) { if ( $this->checkPermission() ) { call_user_func_array(array($this, $name), $args); } else {
public function __call($name, $args)
{
if ( $this->checkPermission() )
{
call_user_func_array(array($this, $name), $args);
}
else
{
// handle error
}
}
但显然,这在拉维4中不起作用。如何正确的方法来模拟这种叫做魔术的方法?我以前考虑过过滤器,但它们没有被赋予被调用的方法名和参数
\u调用
是一个神奇的方法,当类中不存在该方法时调用。所以我看不出这对你有什么帮助
我的建议是使用before过滤器,因为您可以访问当前路由和请求
Route::filter('permissions', function($route, $request)
{
});
然后,您可以使用$route->getAction()
等方法提取将被调用的控制器和方法,并使用$route->getParameters()
或$request->segment()
获取参数
只需在应用此筛选器的组中注册所有路由
Route::group(array('before' => 'permissions'), function()
{
Route::get('/', function() { });
});
\u call
是一个神奇的方法,当该方法在类中不存在时调用该方法。所以我看不出这对你有什么帮助
我的建议是使用before过滤器,因为您可以访问当前路由和请求
Route::filter('permissions', function($route, $request)
{
});
然后,您可以使用$route->getAction()
等方法提取将被调用的控制器和方法,并使用$route->getParameters()
或$request->segment()
获取参数
只需在应用此筛选器的组中注册所有路由
Route::group(array('before' => 'permissions'), function()
{
Route::get('/', function() { });
});
谢谢我被这个答案弄糊涂了stackoverflow.com/questions/3716649/Thank!我被这个答案弄糊涂了stackoverflow.com/questions/3716649/