blocs/blocs: バリデーション条件の指定
blocs/blocs: バリデーション条件の指定
テンプレート内でフォーム入力のバリデーション条件を指定する方法を説明します。
基本的な使い方
data-form で対象フォーム部品を指定し、data-validate にバリデーション条件を記述します。コメント記法でのみ使用可能です。複数条件はパイプ(|)で区切ります。
data-lang でカスタムエラーメッセージを設定できます。省略時はLaravelのデフォルトメッセージが表示されます。
<input type="text" name="name">
<!-- data-form="name" data-validate="required" data-lang="必須入力です。" -->
@error("name") <div class="invalid-feedback">{{ $message }}</div> @enderror
省略記法
必須でない項目には nullable を指定します。
<input type="text" name="name">
<!-- !name="nullable|max:50" data-lang="名前は50文字以下にしてください。" -->
@error("name") <div class="invalid-feedback">{{ $message }}</div> @enderror
利用可能なバリデーションルール
以下はよく使うルールの抜粋です。Laravel 標準のその他ルール(regex, confirmed, unique, mimes など)も data-validate に指定できます。
必須・形式チェック
| data-validateの値 | チェック内容 |
|---|---|
| required | 入力が必須 |
| string | 文字列 |
| numeric | 数値 |
| integer | 整数 |
| boolean | 真偽値 |
| メールアドレス形式 | |
| date | 日付形式 |
| array | 配列 |
値の範囲・サイズチェック
| data-validateの値 | チェック内容 |
|---|---|
| min | 最小値以上(文字列は文字数、数値は値) |
| max | 最大値以下(文字列は文字数、数値は値) |
| between | 最小値と最大値の範囲内 |
| digits | 指定桁数の整数 |
QA
入力フォームの文字数を制限したい
<input type="text" name="name">
<!-- !name="nullable|max:50" data-lang="名前は50文字以下にしてください。" -->
@error("name") <div class="invalid-feedback">{{ $message }}</div> @enderror
入力値の重複チェックをしたい(論理削除対応)
softUnique は論理削除されたレコードを除外して重複を判定します。ルールクラスは App\Rules\softUnique として blocs/admin に同梱されています。
<input type="text" name="email">
<!-- !email="required" data-lang="メールアドレスは必須入力です。" -->
<!-- !email="softUnique:users" data-lang="メールアドレスはすでに登録されています。" -->
@error("email") <div class="invalid-feedback">{{ $message }}</div> @enderror