如何在 laravel nova 上实施审批模型
How to implement for approval model on laravel nova
我有资源 Post
,在创建或更新后,此 post 数据在批准模型中移动。
并且批准状态为:reject
、revision
和 approved
。
如何在审批模式中实施,因为我已经厌倦了。谢谢
您的资源使用了 Model Events,因为 Nova 正在使用 Eloquent。
因此,假设您管理的状态为 select:
<?php
namespace App\Nova;
use Laravel\Nova\Fields\Select;
class Post
{
public function fields()
{
return [
...
Select::make('Status')->options([
'approved' => 'Approved',
'rejected' => 'Rejected',
'revising' => 'Revising',
]);
];
}
}
然后您将通过 listening for that event:
在 saving
上收听 post 的状态
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Post::observe(PostObserver::class);
}
}
<?php
namespace App\Observers;
class PostObserver
{
public function saving($post)
{
if($post->status == 'approved') {
//
}
}
}
值得注意的是,saving()
在saved()
之前捕获了post
您可以在 Observer 中挂钩这些状态并执行更多行为。
因此,如果您想在状态更改时创建其他模型:
<?php
namespace App\Observers;
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 App\Observers;
class PostObserver
{
public function saving($post)
{
if($post->isDirty('status') && $post->status == 'rejected')
{
Mail::to($post->author)->send(new PostRejected($post));
}
}
}
虽然,如果你有一个审批模型..我会说把它放在 created
的 ApprovalObserver 中
~布赖恩·迪林厄姆 (@im_brian_d)
我有资源 Post
,在创建或更新后,此 post 数据在批准模型中移动。
并且批准状态为:reject
、revision
和 approved
。
如何在审批模式中实施,因为我已经厌倦了。谢谢
您的资源使用了 Model Events,因为 Nova 正在使用 Eloquent。
因此,假设您管理的状态为 select:
<?php
namespace App\Nova;
use Laravel\Nova\Fields\Select;
class Post
{
public function fields()
{
return [
...
Select::make('Status')->options([
'approved' => 'Approved',
'rejected' => 'Rejected',
'revising' => 'Revising',
]);
];
}
}
然后您将通过 listening for that event:
在saving
上收听 post 的状态
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Post::observe(PostObserver::class);
}
}
<?php
namespace App\Observers;
class PostObserver
{
public function saving($post)
{
if($post->status == 'approved') {
//
}
}
}
值得注意的是,saving()
在saved()
您可以在 Observer 中挂钩这些状态并执行更多行为。
因此,如果您想在状态更改时创建其他模型:
<?php
namespace App\Observers;
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 App\Observers;
class PostObserver
{
public function saving($post)
{
if($post->isDirty('status') && $post->status == 'rejected')
{
Mail::to($post->author)->send(new PostRejected($post));
}
}
}
虽然,如果你有一个审批模型..我会说把它放在 created
~布赖恩·迪林厄姆 (@im_brian_d)