我有这个表结构
用户
作用
ROLE_USER
我在User
模型中添加了一个函数,用于检查Authenticated用户的角色。但我得到它会返回此错误:
未定义变量:角色
//User.php
public function hasRole($role = null)
{
$hasRole = false;
$hasRole = !$this->roles->filter(function($item) {
return $item->role == $role;
})->isEmpty();
return $hasRole;
}
所以我可以使用这样的东西 - 也许在过滤器里面
if(Auth::user()->hasRole('encoder')) {
//...
}
答案 0 :(得分:1)
在PHP中,默认情况下,函数无权访问函数外部声明的变量。
无法从该闭包中访问此变量
public function hasRole($role = null)
{
$hasRole = false;
$hasRole = !$this->roles->filter(function($item) {
return $item->role == $role;
})->isEmpty(); ^^^^^
return $hasRole;
}
您可以使用use
关键字,它将一个变量传递给函数:
public function hasRole($role = null)
{
$hasRole = false;
$hasRole = !$this->roles->filter(function($item) use($role) {
return $item->role == $role;
})->isEmpty();
return $hasRole;
}
上提供了有关此特定问题的更多信息