1、简介
Laravel Moderation 是一个基于 Laravel 5.* 实现的简单内容审核系统,使用该扩展可以允许或拒绝对应用资源的请求,比如文章、评论、用户等,以便通过屏蔽攻击性、干扰性或侮辱性的内容来保持应用的纯净。简单来说,就是通过一个审核状态来判断资源是否通过审核,然后把这个功能集成到 Laravel Moderation 扩展包。大致的操作流程如下:
首先,用户创建资源(文章、评论或其他Eloquent模型)
创建后该资源处于待审核或不可见状态(例如通过Post::all()只返回审核通过的文章)
后台管理员决定是否通过或拒绝这个资源
在管理员的审核下保持应用的纯净
2、安装
通过Composer安装:
composer require hootlex/laravel-moderation
在config/app.php中注册服务提供者:
'providers' => [
...
HootlexModerationModerationServiceProvider::class,
...
];
最后发布扩展配置文件到config目录:
php artisan vendor:publish --provider="HootlexModerationModerationServiceProvider" --tag=config
3、模型设置
要开启模型审核,可以在模型类中使用 HootlexModerationModeratable trait 并添加status、 moderated_by 和 moderated_at字段到模型对应数据表。
use HootlexModerationModeratable;
class Post extends Model
{
use Moderatable;
...
}
创建数据库迁移文件:
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();
});
}
}
运行迁移命令添加对应字段到数据表posts:
php artisan migrate
4、使用案例
注:这里我们以Post模型为例进行演示,以此类推,你可以对任何模型进行审核。
审核模型
通过id对模型进行审核(通过、不通过):
Post::approve($post->id);
Post::reject($post->id);
或者通过查询构建器:
Post::where('title', 'Horse')->approve();
Post::where('title', 'Horse')->reject();
查询模型
默认情况下只返回审核通过的模型:
//返回所有审核通过的模型
Post::all();
//返回标题为Horse的审核通过的模型
Post::where('title', 'Horse')->get();
查询待审核或审核不通过的模型:
//返回待审核posts
Post::pending()->get();
//返回审核不通过posts
Post::rejected()->get();
//返回审核通过和待审核posts
Post::withPending()->get();
//返回审核通过和不通过的posts
Post::withRejected()->get();
查询所有模型:
//返回所有posts
Post::withAnyStatus()->get();
//返回所有title为Horse的模型
Post::withAnyStatus()->where('title', 'Horse')->get();
模型状态
有三个辅助函数帮助我们检查模型状态:
//检查模型是否是待审核
$post->isPending();
//检查模型是否审核通过
$post->isApproved();
//检查模型是否审核不通过
$post->isRejected();
严格审核
严格审核意味着只有审核通过对资源才能查询出来。要返回其他状态的模型必须修改配置禁用严格审核,下面我们就来看看如何配置。
5、配置
全局配置
通过编辑 config/moderation.php 文件对全局进行配置,在该文件中你可以配置以下选项:
status_column 表示数据表中默认状态字段 status
moderated_at_column 表示数据表中默认字段 moderated_at
moderated_by_column 表示数据表中默认字段 moderated_by
strict 表示严格审核
模型配置
在模型中你可以定义一些变量来覆盖全局配置
比如要覆盖 status 字段,可以这么做:
const MODERATION_STATUS = 'moderation_status';
要覆盖 moderated_at 字段:
const MODERATED_AT = 'mod_at';
要覆盖 moderated_by 字段:
const MODERATED_BY = 'mod_by';
要启用或者禁用严格审核:
public static $strictModeration = true;
创造与魔法 安卓版v1.0.0750
创造与魔法是一款开放世界手游,在游戏中玩家可探索这个奇妙的世
创造与魔法修改版 最新版v1.0.0750
创造与魔法无限点券版是款探索冒险游戏,该款游戏的操作还是蛮自
战争与文明官方版本 安卓版v1.7.16
战争与文明是一款由上海邮通科技有限公司开发的战争策略游戏,这
迷你世界0元领皮肤无限迷你币版 最新安卓版v1.43.0
迷你世界0元购买皮肤版是这款开放沙盒冒险建造游戏的特殊破解版
创造与魔法无限经验版 安卓版v1.0.0750
创造与魔法无限经验版是款可以改造环境,整个游戏的自由度还是蛮