微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Laravel Nova上实现批准模型

如何解决如何在Laravel Nova上实现批准模型

我有资源Post,并且在创建或更新后,该帖子数据会在批准模型中移动。

批准的状态为:rejectrevisionapproved

如何在批准模型中实施,因为我已经累了。谢谢

解决方法

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

因此,假设您要通过选择来管理状态:


<?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上收听帖子的状态

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的ApprovalObserver中


〜Brian Dillingham(@im_brian_d

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。