メインコンテンツへスキップ

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

HTML5 属性からのバリデーション自動生成

タグ記法のフォーム部品に HTML5 属性(required, minlength, maxlength, pattern 等)を付けると、BLOCS が Laravel バリデーションルールへ自動変換します。type="number" では min / max / step も変換対象ですが、minmax の両方が揃った場合のみルールが生成されます(片方だけでは変換されません)。data-validate を併用する場合は両方がマージされます。

<input type="text" name="name" required minlength="3" maxlength="50">
<input type="number" name="age" min="0" max="120" step="1">

required 以外の制約付き属性では、未入力を許容するため nullable が自動付与されます。

利用可能なバリデーションルール

以下はよく使うルールの抜粋です。Laravel 標準のその他ルール(regex, confirmed, unique, mimes など)も data-validate に指定できます。

必須・形式チェック

data-validateの値 チェック内容
required 入力が必須
string 文字列
numeric 数値
integer 整数
boolean 真偽値
email メールアドレス形式
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