如何在存储新资源时向 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
在 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