我用laravel设置了ACL。我有以下助手:
function user($user_id = null)
{
if (!$user_id) return Auth::user();
return User::where('id', $user_id)->first();
}
我有这个助手函数,所以我不必键入长的Auth::user()
。
问题来了。我已经设置了ACL,所以当我在模型中执行以下操作时,用户没有登录,我会收到一个错误。
if (user()->can('edit-blog')) {
echo 'you can edit blog!';
}
如果用户没有登录,这就是错误:
在空上调用成员函数can()
现在,我的网站上到处都是下面的代码。我在几乎每个视图、模型和控制器中都使用ACL。我不想为了不出错而不得不做下面这样的事情。
if (user() && user()->can('edit-blog')) {
// do stuff
}
如果出现"null"错误或异常,如何返回false?
**我尝试过的**
我试过try/catch
,但它没有任何作用:
try {
if (!$user_id) return Auth::user();
return User::where('id', $user_id)->first();
} catch (Exception $ex) {
return false;
}
感谢您的支持。
在调用can 之前,您需要检查用户是否已登录
if(Auth::check() && user()->can('edit-post')){
Return true;
}else{
Return false;
}