NGワードのカスタムバリデーションルールを作る [Laravel]
Laravelで禁止用語(NGワード)のバリデーション処理を行うカスタムルールのファイルを作る方法と使い方です。

関連記事:独自のバリデーションを作成する
1. カスタムルールのファイル作成
php artisan make:rule NgWord
app\RulesにNgWord.phpが作成されます。
2. NgWord.php
app\Rules\NgWord.php
<?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class NgWord implements Rule { public function __construct($column) { $this->column = $column; } public function passes($attribute, $value) { // 禁止用語 // ※各自で追加して下さい $NG_WORDS =[ "カジノ", "ギャンブル" ]; // 判定 foreach($NG_WORDS as $word) { // 禁止用語が含まれていれば if(strpos($value, $word) !== false){ return false; } } return true; } public function message() { return trans('validation.attributes.' . $this->column) . 'に禁止用語が含まれています。'; } }
3.使い方
resources\lang\ja\validation.php
validation.phpは日本語訳を使用してattributesに次を追記する。
'attributes' => [ "name" => "名前", "url" => "ホームページ", "body" => "本文", ],
app\Answer.php
[モデル]
<?php namespace App; use Illuminate\Database\Eloquent\Model; // 追加分 use App\Rules\NgWord; class Answer extends Model { protected $guarded = array('id'); public static function Rules() { return [ 'name' => ['required','max:50', new NgWord('name')], 'url' => 'nullable|url|max:250', 'body' => ['required', new NgWord('body')] ]; } }
app\Http\Controllers\AnswerController.php
[コントローラー]
// 追加分 use App\Answer; public function store(Request $request) { // バリデーション $request->validate(Answer::Rules()); }
全体のソースはGitHubにあげています。
スポンサーリンク
関連記事
公開日:2020年11月16日 最終更新日:2020年12月09日
記事NO:02851
この記事を書いた人
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
プチモンテ代表、アーティスト名:プチモンテ | |
🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~ |
オリジナル曲を始めました✨
YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte