翻译进度
4
分块数量
2
参与人数

注册 Actions

这是一篇社区协同翻译的文章,你可以点击右边区块信息里的『改进』按钮向译者提交改进建议。

  • 授权
  • Pivot 操作
    一旦定义了操作后,我们就可以将他附加给资源了,Nova 生成的每个人资源都包含一个 actions 方法。要将操作附加到资源,只需将其添加到此方法返回的操作数组中:
/**
 * 为资源提供可用的操作。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function actions(Request $request)
{
    return [new Actions\EmailAccountProfile];
}
ncgis 翻译于 2个月前

授权

如果你想要将特定的操作暴露给特定的用户,你可以把 canSee 方法链到你的 lens 注册上。canSee方法接收一个 返回 true 或者 false 的闭包函数。这个闭包函数接收的是一个 HTTP 请求的 request 对象:

use App\User;

/**
 * 为资源提供可用的操作。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function actions(Request $request)
{
    return [
        (new Actions\EmailAccountProfile)->canSee(function ($request) {
            return $request->user()->can(
                'emailAnyAccountProfile', User::class
            );
        }),
    ];
}
ncgis 翻译于 2个月前

canRun 方法

有时候,用户能够看到某个操作的,但是他只能对特定的资源使用该操作。你能够联合使用 canRuncanSee 来完成这项功能。canRun 方法能够接收 HTTP 的请求对象 Request 和希望执行该方法的用户的模型作为参数:

/**
 * 为资源提供可用的操作。
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function actions(Request $request)
{
    return [
        (new Actions\EmailAccountProfile)->canSee(function ($request) {
            return true;
        })->canRun(function ($request, $user) {
            return $request->user()->can('emailAccountProfile', $user);
        }),
    ];
}
ncgis 翻译于 2个月前

Pivot 操作

通常情况下,操作只会操作一个资源。然而,你希望附加操作给 belongsToMany 的字段,如此操作能够操作到 pivot /中间表的记录。
要实现此目的,你可以在字段定义的时候链接到 actions 方法中:

BelongsToMany::make('Roles')
    ->actions(function () {
        return [
            new Actions\MarkAsActive,
        ];
    });

一旦你的操作被附加到了这个字段,你能够在父级资源的详情页中的关系索引中选择和执行这个方法。

ncgis 翻译于 2个月前

本文章首发在 Laravel China 社区
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

参与译者:2
讨论数量: 0
发起讨论


暂无话题~