[Laravel]バリデーション機能の使用

今回はLaravelフレームワークに標準搭載されているバリデーション機能の基本的な使用方法の説明をおこないたいと思います。

バリデーションルールの設定

Laravelでは各テーブルに対応したModelクラスを作成するのが一般的ですが、Modelクラスにバリデーションのルールの追加をおこなうことができます。

例として、studentsテーブルがある場合、対応するModelとして「Student」クラスの作成をおこないます。
その中にstaticとしてバリデーションルールを$rulesにまとめます。

class Student extends Model{
    public static $rules = [
	    'name'=>'required|string|max:20'
		'student_number'=>'integer|min:0'
		'team'=>'required|in:紅組,白組'
	];
}

上記の例のようにバリデーションは「バリデーション対象のName => バリデーションルール」として配列で記述します。バリデーションルールが複数ある場合は「|」で区切って、複数配置することが可能です。またバリデーションルールとして引数を指定する必要があるものは「:」以降で指定をおこないます。

上記のサンプルで設定したバリデーションルールの意味は以下の通りです。

required必須項目
string文字列
integer整数値
max最大桁数
min最小桁数
in選択候補のいずれかであること

バリデーションルールをフォームに適用する方法

バリデーションを使用するにはController側でvalidateメソッドを呼び出して実行します。

$this->validate($request,Student::$rules)

フォームからPOSTされたデータは$requestに入っています。$requestの内容が$rulesの条件を満たしているか照合をおこない、OKであれば、$this->validate以降の処理をおこないます。NGの場合、エラー内容の保存をおこないフォームの再描画がおこなわれます。

$this->validateで発生したエラー内容は変数$errorsの中に保存されますので、この内容をフォーム(Bladeテンプレート)に表示するような処理の記述をおこなうことによりHTML画面上にエラー文言の表示をおこなうことができます。

@if(count($errors) > 0) 
 <ul>
  @foreach($errors->all() as $error) 
  <li>{{ $error }}</li> 
  @endforeach
  </ul>
@endif

上記の例では$errors変数内にエラーがひとつ以上ある場合に、@foreachループをおこない、エラー内容をリスト化して表示しています。

以上がLaravelでのバリデーションの使用方法です。Laravel標準の状態ではバリデーションのエラーメッセージは英語で表示されます。次回はバリデーションのエラーメッセージを日本語化する方法について紹介していきたいと思います。

金曜日担当:nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム