Laravel 8 策略自動(dòng)發(fā)現(xiàn)

2021-07-03 15:06 更新

不需要手動(dòng)注冊(cè)模型策略,只要模型和策略遵循標(biāo)準(zhǔn)的 Laravel 命名約定,Laravel 就可以自動(dòng)發(fā)現(xiàn)策略。具體來說,策略必須位于包含模型的目錄下的 Policies 目錄中。例如,模型可以放在 app 目錄中,而策略可以放在 app/Policies 目錄中。此外,策略名稱必須與模型名稱匹配,并具有 Policy 后綴。因此,一個(gè) User 模型將對(duì)應(yīng)于一個(gè) UserPolicy 類。

如果希望提供自己的策略發(fā)現(xiàn)邏輯,可以使用 Gate::guessPolicyNamesUsing 方法注冊(cè)自定義回調(diào)。通常,這個(gè)方法應(yīng)該從應(yīng)用程序的 AuthServiceProviderboot 方法中調(diào)用:

use Illuminate\Support\Facades\Gate;

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

注意:在 AuthServiceProvider 中顯式映射的任何策略都將優(yōu)先于任何潛在的自動(dòng)發(fā)現(xiàn)策略。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)