Laravel Nova 注册 Lenses
2023-02-16 17:09 更新
一旦你定义了一个 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
),
];
}
以上内容是否对您有帮助:
更多建议: