我try 使用策略筛选谁可以在我的应用程序上编辑/删除,但它不起作用.try 在Blade 上使用它.

问题政策.php

    const UPDATE = 'update';
    const DELETE = 'delete';

    /**
     * Check if user can update a question.
     */
    public function update(User $user, Question $question): bool
    {
        return $question->isAskedBy($user) || $user->isModerator() || $user->isAdmin();
    }

    /**
     * Check if user can delete a question.
     */
    public function delete(User $user, Question $question): bool
    {
        return ($question->isAskedBy($user) || $user->isModerator() || $user->isAdmin()) && !$user->isBanned();
    }

问题刀身php

@can(App\Policies\QuestionPolicy::UPDATE, App\Models\User::class, App\Models\Question::class)
   <a class="text-sm font-light text-gray-600" href="#">Edit</a>
@endcan
@can(App\Policies\QuestionPolicy::DELETE, App\Models\User::class, App\Models\Question::class)
   <a class="text-sm font-light text-gray-600" href="#">Delete</a>
@endcan

我做错了吗?试图以管理员和创建问题的用户的身份登录,但未呈现编辑/删除链接.

推荐答案

如果策略涉及特定问题,则需要传递问题的实际实例(并且不需要传递用户类):

@can(App\Policies\QuestionPolicy::UPDATE, $question)
   <a class="text-sm font-light text-gray-600" href="#">Edit</a>
@endcan
@can(App\Policies\QuestionPolicy::DELETE, $question)
   <a class="text-sm font-light text-gray-600" href="#">Delete</a>
@endcan

策略中的$user始终是当前登录的用户.

Php相关问答推荐

如何使用URL链接(mdl)切换选项卡

如何隐藏x轴图表上的值

在冲突和几何上插入的Postgres参数化查询在PHP中不起作用

如何使用MS Graph PHP SDK V2下载文件

如何使用索引加速和优化MySQL搜索

PHP文件上载问题-";Move_Uploaded_Files";未按预期工作

PHP -将字符串拆分为两个相等的部分,但第二个字符串中的单词更多

如何使用PHP从TXM(XML)标记中读取特定属性

如何在自定义邮箱内容中获取WooCommerce订单项目的详细信息?

服务器升级到新的mysql版本8.0.34后查询错误

PHP Laravel 迁移文件不创建关系

PHP 解析 XML 以获取多个深度的所有字符串值

调度程序不发送任何消息

Golang - Html 模板:如何创建导航项 - 子菜单?我找不到怎么做

在 mysql 上的 PDO 中启用自动提交并将自动提交设置为关闭

仅允许减少 WooCommerce 中已完成订单的库存数量

使用循环和引用而不是递归创建分层/父子数组

按数字然后按字符串对关联 PHP 数组进行排序

如何在光速网络服务器中使用 apache ..htaccess

Laravel 响应 html 默认页面忽略控制器