如何在存储新资源时向Laravel Nova添加回调函数?

时间:2019-11-19 03:41:18

标签: php laravel laravel-nova

在Nova的ResourceStoreController.php中,我可以看到以下代码:

$model = DB::transaction(function () use ($request, $resource) {
    [$model, $callbacks] = $resource::fill(
        $request, $resource::newModel()
    );

    if ($request->viaRelationship()) {
        $request->findParentModelOrFail()
                ->{$request->viaRelationship}()
                ->save($model);
    } else {
        $model->save();
    }

    ActionEvent::forResourceCreate($request->user(), $model)->save();

    collect($callbacks)->each->__invoke();

    return $model;
});

肯定看起来我应该能够在此行上为其设置回调函数:

collect($callbacks)->each->__invoke();

但是如何在Laravel Nova中为特定资源设置回调?

基本上,我想在存储新资源时触发事件或回调,但仅在通过nova创建资源时触发。

1 个答案:

答案 0 :(得分:0)

对于Nova <= 2.x:

在Nova的最新版本中,我能够使用一个隐藏字段来完成此操作,然后使用普通的laravel观察者在更新时检查该字段。

已于2020年11月针对Nova ^ 3.0 +更新:

您现在可以创建一个特定于Nova使用的Laravel观察器,并通过将其添加到NovaServiceProvider来告诉Nova使用它:

Nova::serving(function () {
    User::observe(UserObserver::class);
});

文档在这里:

https://nova.laravel.com/docs/3.0/resources/#resource-events