[Laravel]バリデーション機能の使用
- 2020年5月01日
- 技術情報
今回は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
nishida at 2020年05月01日 10:00:30