我想在用户通过身份验证后设置全局变量 - 让我们调用它permissions
。变量应该在控制器和视图中可用。
实现它的最佳方法是什么?现在在每个方法中,我必须执行数据库查询并检查不是最佳的用户角色。
我知道我可以在appserviceprovider中声明view::share
方法将变量传递给视图,但是在用户通过身份验证后执行引导方法。
更新
我已经创建了从Controller扩展的BaseController。
BaseController:
class BaseController extends Controller {
public $permissions;
public function __construct() {
$this->permissions = GroupRoles::where('id', Auth::user()->id)->first();
}
}
然后我尝试从UserController访问权限变量,该变量从BaseController扩展。试图获取非对象的访问权限。我认为这是因为BaseController构造函数是在中间件之前构建的。
class UserController extends BaseController {
public function showPermissions() {
return var_dump($this->permissions);
}
}
最终解决方案
基石是使用BaseController中的$this->middleware(function ($request, $next)
。
答案 0 :(得分:0)
在控制器中尝试它或创建自己的BaseController然后从它扩展控制器,在BaseController中你可以这样做
public $permissions;
public function __construct()
{
$permissions = Permissions::all() //For example
$this->permissions = $permissions
}
然后您可以从每个控制器访问它,例如$this->permissions