Laravel Moderation は、Laravel 5.* に基づいて実装されたシンプルなコンテンツ監査システムです。この拡張機能を使用して、記事、コメント、ユーザーなどのアプリケーション リソースに対するリクエストを許可または拒否します。攻撃的、破壊的、侮辱的なコンテンツをブロックしてアプリをクリーンに保つため。簡単に言うと、監査ステータスを使用してリソースが監査に合格したかどうかを判断し、この機能を Laravel Moderation 拡張パッケージに統合することです。一般的な操作プロセスは次のとおりです:
Composer を介してインストールします:
config/app.php のcomposer require hootlex/laravel-moderation
サービスプロバイダーを登録します:
'providers' => [ ... Hootlex\Moderation\ModerationServiceProvider::class, ...];
最後に、拡張設定ファイルを config ディレクトリに公開します:
php artisan vendor:publish --provider="Hootlex\Moderation\ModerationServiceProvider" --tag=config
モデルのレビューを有効にするには、HootlexModerationModeratable トレイトを使用できます。モデル クラスを作成し、 status 、 moduleed_by 、および modded_at フィールドを追加します。モデルはデータ テーブルに対応します。
use Hootlex\Moderation\Moderatable;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(); }); }}
移行コマンドを実行して、対応するフィールドをデータ テーブルのポストに追加します:
php artisan migrate
注: ここでは、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();
保留中またはレビューに失敗したモデルのクエリ:
//返回待审核postsPost::pending()->get();//返回审核不通过postsPost::rejected()->get();//返回审核通过和待审核postsPost::withPending()->get();//返回审核通过和不通过的postsPost::withRejected()->get();
すべてのモデルのクエリ:
//返回所有postsPost::withAnyStatus()->get();//返回所有title为Horse的模型Post::withAnyStatus()->where('title', 'Horse')->get();
モデルのステータスの確認に役立つ 3 つの補助関数があります:
//检查模型是否是待审核$post->isPending();//检查模型是否审核通过$post->isApproved();//检查模型是否审核不通过$post->isRejected();
厳格なレビュー これは、レビューに合格したリソースのみをクエリできることを意味します。他の状態のモデルを返すには、構成を変更して厳密な監査を無効にする必要があります。その構成方法を見てみましょう。
このファイルで次のオプションを設定できます。
モデル内でいくつかを定義できます変数を使用してグローバル構成をオーバーライドします
たとえば、status フィールドをオーバーライドするには、次のようにします:
const MODERATION_STATUS = 'moderation_status';
Modered_at フィールドをオーバーライドするには:
const MODERATED_AT = 'mod_at';
Modeded_by フィールドをオーバーライドするには:
const MODERATED_BY = 'mod_by';
厳密な監査を有効または無効にするには:
れーれー