※個人的なメモです。
フォームの入力にたいしてバリデーションするならフォームリクエスト、またはValidatorクラスのメソッドを使う
下記フォームリクエスト作成コマンド
php artisan make:request CreateUserRequest
保存時とか特定のタイミングでエラー検証したい場合はValidatorを使う。
コントローラ等で下記コードを記載すればよい
use Validator;
errorsメソッド
# 全てのエラーメッセージを配列で取得
$errors->all()
# 指定した項目の初めのエラーメッセージを取得
$errors->first('項目名')
# 指定した項目のエラーメッセージ全てを取得
$errors->get('項目名')
バリデーション 検証ルール メソッド
# true, on, yes, 1をチェック(チェックボックス等で使用)
accept
# アドレス指定されたドメインが実際に有効かどうかをチェック
active_url
# url形式かどうかをチェック
url
# 指定した日付より後かチェック
after: 日付
# 指定した日付が同じか、それより後かをチェック
after_or_equal: 日付
...その他多数あり
バリデーション結果検証メソッド
failsメソッド
# バリデーションがエラーになっていればtrueを返す
$validator->fails()
passesメソッド
# バリデーションが成功していればtrueを返す(failsメソッドの逆)
$validator-> passes()
バリデーション エラーとフォームの値をリダイレクト先に表示
withErrorsとwithInputの使い方
下記のように書くとリダイレクト先にエラーメッセージとフォームの値を保持できる
$validator = Validator::make($request->all(),[
'name' => 'required',
'mail' => 'email',
'age' => 'numeric|between:0,150',
]);
if($validator->fails()){
return redirect('/hello')->withErrors($validator)->withInput();
}
クエリーに対してバリデーション
queryメソッドを使う
$validator = Validator::make($request->query(),[
'id' => 'required',
'pass' => 'required'
]);