一种政策适用于多种模型

时间:2020-05-17 16:27:10

标签: laravel

是否可以对多个模型使用相同的策略?

我有一个具有21个关系的模型,因此,任何一个模型的编辑权限都是相同的-因此我将维护22个策略。

1 个答案:

答案 0 :(得分:1)

您不能对多个模型使用相同的策略,因为在创建策略时,必须注册它才能生效,在laravel中创建策略需要将模型应用于该模型,而注册策略则需要该政策适用的模型:

stable_2020(datetime)

第一个参数是模型类....

但是:

您可以使用Gate,并尝试使您的代码尽可能通用:

// in AuthServiceProvider Class:
 protected $policies = [
        Post::class => PostPolicy::class,
    ];

并在您的控制器中:

 Gate::define('update-entity', function ($user, $entity) {
// your code logic

        return ....;
    });

有关“盖茨与政策”的更多详细信息,

https://laravel.com/docs/7.x/authorization