阅读(1202) (9)

Laravel 8 策略自动发现

2021-06-29 16:33:51 更新

不需要手动注册模型策略,只要模型和策略遵循标准的 Laravel 命名约定,Laravel 就可以自动发现策略。具体来说,策略必须位于包含模型的目录下的 Policies 目录中。例如,模型可以放在 app 目录中,而策略可以放在 app/Policies 目录中。此外,策略名称必须与模型名称匹配,并具有 Policy 后缀。因此,一个 User 模型将对应于一个 UserPolicy 类。

如果希望提供自己的策略发现逻辑,可以使用 Gate::guessPolicyNamesUsing 方法注册自定义回调。通常,这个方法应该从应用程序的 AuthServiceProviderboot 方法中调用:

use Illuminate\Support\Facades\Gate;

Gate::guessPolicyNamesUsing(function ($modelClass) {
    // return policy class name...
});

注意:在 AuthServiceProvider 中显式映射的任何策略都将优先于任何潜在的自动发现策略。