Skip to main content

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 真偽値
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