Laravel - 在null&上调用方法如果为null则返回false

时间:2016-05-10 01:23:28

标签: php laravel exception

我使用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()on null

现在,我的网站中到处都有以下代码。我几乎在每个视图,模型和控制器中都使用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;
}

感谢您的支持。

1 个答案:

答案 0 :(得分:0)

您需要在调用之前检查用户是否已登录

if(Auth::check() && user()->can('edit-post')){
    Return true;
 }else{
    Return false;
 }
相关问题