Laravel:未定义的方法“cannot”

kq0g1dla  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(134)

奇怪的是,这个功能本身工作得很好,所以我猜这可能是我的智能手机的问题,但我不知道如何修复或至少忽略错误消息(以一种安全的方式)?我也只是简单地遵循教程,它的工作很好,他和我,但我只是得到了错误消息。
这就是我的函数看起来的样子:

public function delete(Post $post) {
    if (auth()->user()->cannot('delete', $post)) {
        return 'You cannot do that';
    }
    $post->delete()
}

我已经搜索过了,看到有人建议安装一个名为“laravel-ide-helper”的composer包,但这并没有做任何事情。
此外,我使用neovim与intelephense LSP(免费版),但当切换到另一个LSP称为phpactor时,我得到一个略有不同的错误消息:类“Illuminate\Contracts\Auth\Authenticatable”上不存在方法“cannot”
任何帮助非常感谢,谢谢。

aor9mmx1

aor9mmx11#

使用Request类而不是全局auth()方法来获取用户似乎摆脱了错误,并且仍然可以按预期工作(我认为我所遵循的教程内容有点过时)
像这样:

use Illuminate\Http\Request;

public function delete(Request $request, Post $post) {
    if ($request->user()->cannot('delete', $post)) {
         return 'You cannot do that';
    }
    $post->delete()
}

请参阅文档:https://laravel.com/docs/10.x/authorization#via-the-user-model

相关问题