在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创建资源时触发。
答案 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