Laravel Nova 注冊(cè) Lenses

2023-02-16 17:09 更新

一旦你定義了一個(gè) lens,你要準(zhǔn)備好將它附加到一個(gè)資源中。每一個(gè) Nova 生成的資源都包含一個(gè) lenses 方法。要將一個(gè) lens 附加一個(gè)資源中,你只需要簡(jiǎn)單的將它添加到 lenses 方法返回的數(shù)組中:

/**
 * 獲取屬于該資源的 lenses
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function lenses(Request $request)
{
    return [new Lenses\MostValuableUsers];
}

授權(quán)

如果你只希望向某些用戶暴露特定的 lens,你可以將 canSee 方法加入到你的 lens 注冊(cè)鏈條中。canSee 方法接受一個(gè)返回 true 或 false 的閉包。該閉包會(huì)接收進(jìn)入的 HTTP 請(qǐng)求。

use App\User;

/**
 * Get the lenses available for the resource.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function lenses(Request $request)
{
    return [
        (new Lenses\MostValuableUsers)->canSee(function ($request) {
            return $request->user()->can(
                'viewValuableUsers', User::class
            );
        }),
    ];
}

在上面的例子中,我們?cè)?nbsp;User 模型中使用了 Authorizable trait 的 can 方法來判斷授權(quán)的用戶是否已經(jīng)被授權(quán)訪問 viewValuableUsers action。然而,對(duì)于 canSee 方法來說,通過代理方式訪問授權(quán)規(guī)則的方法是常見的使用案例,因此你可以使用 canSeeWhen 方法來實(shí)現(xiàn)相同的行為。canSeeWhen 方法擁有與 Illuminate\Foundation\Auth\Access\Authorizable trait 中 can 方法相同的方法簽名:

/**
 * 獲取屬于該 resource 的 lenses
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function lenses(Request $request)
{
    return [
        (new Lenses\MostValuableUsers)->canSeeWhen(
            'viewValuableUsers', User::class
        ),
    ];
}


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)