如何在laravel nova上实现审批模式



我有资源Post,在创建或更新后,这会在审批模型中发布数据移动。

审批状态为:rejectrevisionapproved

如何在审批模式下实施,因为我已经累了。感谢

您的资源使用Model Events是因为Nova正在使用Eloquent。

因此,假设您使用select来管理状态:


<?php
namespace AppNova;
use LaravelNovaFieldsSelect;
class Post
{
public function fields()
{
return [
...
Select::make('Status')->options([
'approved' => 'Approved',
'rejected' => 'Rejected',
'revising' => 'Revising',
]);
];
}
}

然后,您可以通过侦听事件来侦听saving上的帖子状态:

class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Post::observe(PostObserver::class);
}
}
<?php
namespace AppObservers;
class PostObserver
{
public function saving($post)
{
if($post->status == 'approved') {
//
}
}
}

值得注意的是,saving()在成为saved()之前就抓住了帖子

您可以在Observer中挂接这些状态并执行更多行为。

因此,如果你想在状态发生变化时创建一个额外的模型:

<?php
namespace AppObservers;
class PostObserver
{
public function saving($post)
{
if($post->isDirty('status')) 
{
Approval::create([
'post_id' => $post->id,
'user_id' => auth()->id(),
'status' => $post->status,
]);
}
}
}

或者任何与状态更改相关的任务,例如发送邮件:

<?php
namespace AppObservers;
class PostObserver
{
public function saving($post)
{
if($post->isDirty('status') && $post->status == 'rejected') 
{
Mail::to($post->author)->send(new PostRejected($post));
}
}
}

不过,如果您有Approval模型。。我想把它放在created的ApprovalObserver中


~Brian Dillingham(@im_Brian_d(

最新更新