Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查是否使用了Gate::before方法?_Php_Laravel - Fatal编程技术网

Php 如何检查是否使用了Gate::before方法?

Php 如何检查是否使用了Gate::before方法?,php,laravel,Php,Laravel,我在代码中使用了laravel的授权,并在我的服务提供商中定义了before方法,如文档所示: public function before($user, $ability) { if ($user->email == 'super@mail.com') { return true; } } 有时我需要知道支票是否被拦截。因此,我不想在不同的地方检查邮件(或超级用户的任何其他条件),而是想检查是否使用了这种拦截方法。我的意思是,不要一次又一次地在不同的地方

我在代码中使用了laravel的授权,并在我的服务提供商中定义了before方法,如文档所示:

public function before($user, $ability)
{
    if ($user->email == 'super@mail.com') {
        return true;
    }
}
有时我需要知道支票是否被拦截。因此,我不想在不同的地方检查邮件(或超级用户的任何其他条件),而是想检查是否使用了这种拦截方法。我的意思是,不要一次又一次地在不同的地方使用这个条件(如果电子邮件是相等的…)。我只想设置这个超级管理员条件一次(在服务提供商中),然后在需要时检查它。比如:

\Gate::isIntercepted

您可以返回授权响应,而不是简单地返回
true

之前的公共函数($user$ability)
{
如果($user->email=='super@mail.com') {
返回$this->allow('superadmin');
}
}
如果使用
authorize
,您将在稍后收到响应:

公共功能更新(Post$Post)
{
$response=$this->authorize($post);
如果($reponse->message()=='superadmin'){
//做点什么
}
}

首先非常感谢。我是拉雷维尔的新手。你能详细解释一下吗?当我使用“return$this->allow('superadmin')时,我遇到了一个错误。调用未定义的方法[allow]。@Skeletor-你必须
使用该特质。是的,经过一番努力,我发现我必须使用该特质。再次发出thx@JosephSilber。