Heim > Backend-Entwicklung > PHP-Tutorial > 使用 Laravel Moderation 扩展在 Laravel 应用中实现简单的内容审核系统

使用 Laravel Moderation 扩展在 Laravel 应用中实现简单的内容审核系统

WBOY
Freigeben: 2016-06-23 13:01:30
Original
1258 Leute haben es durchsucht

1、简介

Laravel Moderation 是一个基于 Laravel 5.* 实现的简单内容审核系统,使用该扩展可以允许或拒绝对应用资源的请求,比如文章、评论、用户等,以便通过屏蔽攻击性、干扰性或侮辱性的内容来保持应用的纯净。简单来说,就是通过一个审核状态来判断资源是否通过审核,然后把这个功能集成到 Laravel Moderation扩展包。大致的操作流程如下:

  • 首先,用户创建资源(文章、评论或其他Eloquent模型)
  • 创建后该资源处于待审核或不可见状态(例如通过 Post::all() 只返回审核通过的文章)
  • 后台管理员决定是否通过或拒绝这个资源
  • 在管理员的审核下保持应用的纯净

2、安装

通过Composer安装:

composer require hootlex/laravel-moderation
Nach dem Login kopieren

在 config/app.php 中注册服务提供者:

'providers' => [    ...    Hootlex\Moderation\ModerationServiceProvider::class,    ...];
Nach dem Login kopieren

最后发布扩展配置文件到 config 目录:

php artisan vendor:publish --provider="Hootlex\Moderation\ModerationServiceProvider" --tag=config
Nach dem Login kopieren

3、模型设置

要开启模型审核,可以在模型类中使用 Hootlex\Moderation\Moderatable trait 并添加 status 、 moderated_by 和 moderated_at 字段到模型对应数据表。

use Hootlex\Moderation\Moderatable;class Post extends Model{    use Moderatable;    ...}
Nach dem Login kopieren

创建数据库迁移文件:

class AddModeratioColumnsToPostsTable extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::table('posts', function (Blueprint $table) {            $table->smallInteger('status')->default(0);            $table->dateTime('moderated_at')->nullable();            //如果你想跟踪谁审核了这个模型,添加一个'moderated_by'字段            //$table->integer('moderated_by')->nullable()->unsigned();        });    }    /**     * Reverse the migrations.     *     * @return void     */    public function down()    {        Schema::table('posts', function(Blueprint $table)        {            $table->dropColumn('status');            $table->dropColumn('moderated_at');            //$table->integer('moderated_by')->nullable()->unsigned();        });    }}
Nach dem Login kopieren

运行迁移命令添加对应字段到数据表 posts :

php artisan migrate
Nach dem Login kopieren

4、使用案例

注:这里我们以Post模型为例进行演示,以此类推,你可以对任何模型进行审核。

审核模型

通过id对模型进行审核(通过、不通过):

Post::approve($post->id);Post::reject($post->id);
Nach dem Login kopieren

或者通过查询构建器:

Post::where('title', 'Horse')->approve();Post::where('title', 'Horse')->reject();
Nach dem Login kopieren

查询模型

默认情况下只返回审核通过的模型:

//返回所有审核通过的模型Post::all();//返回标题为Horse的审核通过的模型Post::where('title', 'Horse')->get();
Nach dem Login kopieren

查询待审核或审核不通过的模型:

//返回待审核postsPost::pending()->get();//返回审核不通过postsPost::rejected()->get();//返回审核通过和待审核postsPost::withPending()->get();//返回审核通过和不通过的postsPost::withRejected()->get();
Nach dem Login kopieren

查询所有模型:

//返回所有postsPost::withAnyStatus()->get();//返回所有title为Horse的模型Post::withAnyStatus()->where('title', 'Horse')->get();
Nach dem Login kopieren

模型状态

有三个辅助函数帮助我们检查模型状态:

//检查模型是否是待审核$post->isPending();//检查模型是否审核通过$post->isApproved();//检查模型是否审核不通过$post->isRejected();
Nach dem Login kopieren

严格审核

严格审核意味着只有审核通过对资源才能查询出来。要返回其他状态的模型必须修改配置禁用严格审核,下面我们就来看看如何配置。

5、配置

全局配置

通过编辑 config/moderation.php 文件对全局进行配置,在该文件中你可以配置以下选项:

  • status_column 表示数据表中默认状态字段 status
  • moderated_at_column 表示数据表中默认字段 moderated_at
  • moderated_by_column 表示数据表中默认字段 moderated_by
  • strict 表示严格审核

模型配置

在模型中你可以定义一些变量来覆盖全局配置

比如要覆盖 status 字段,可以这么做:

const MODERATION_STATUS = 'moderation_status';
Nach dem Login kopieren

要覆盖 moderated_at 字段:

const MODERATED_AT = 'mod_at';
Nach dem Login kopieren

要覆盖 moderated_by 字段:

const MODERATED_BY = 'mod_by';
Nach dem Login kopieren

要启用或者禁用严格审核:

public static $strictModeration = true;
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage