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

How can I add a callback function to Laravel Nova on storing a new resource?

在 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 创建时。

对于新星 <= 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