我有资源Post
,在创建或更新后,这会在审批模型中发布数据移动。
审批状态为:reject
、revision
、approved
。
如何在审批模式下实施,因为我已经累了。感谢
您的资源使用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(