codecamp

Laravel Nova 注册 Lenses

一旦你定义了一个 lens,你要准备好将它附加到一个资源中。每一个 Nova 生成的资源都包含一个 lenses 方法。要将一个 lens 附加一个资源中,你只需要简单的将它添加到 lenses 方法返回的数组中:

/**
 * 获取属于该资源的 lenses
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function lenses(Request $request)
{
    return [new Lenses\MostValuableUsers];
}

授权

如果你只希望向某些用户暴露特定的 lens,你可以将 canSee 方法加入到你的 lens 注册链条中。canSee 方法接受一个返回 true 或 false 的闭包。该闭包会接收进入的 HTTP 请求。

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
            );
        }),
    ];
}

在上面的例子中,我们在 User 模型中使用了 Authorizable trait 的 can 方法来判断授权的用户是否已经被授权访问 viewValuableUsers action。然而,对于 canSee 方法来说,通过代理方式访问授权规则的方法是常见的使用案例,因此你可以使用 canSeeWhen 方法来实现相同的行为。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
        ),
    ];
}


Laravel Nova 定义 Lenses
Laravel Nova 定义 Actions
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }