普通、入力フォームを作成するときは、クライアント側のバリデーション(HTMLやJavaScript)に加えてサーバーサイドにもバリデーションをかけます。
Laravelにはバリデーションの機能も備わっていて「フォームリクエスト」という機能を使います。
このフォームリクエストには「バリデーションのルール」と「エラーメッセージ」を記述します。
バリデーションのルールは数多くあります。
今回はこの「バリデーションのルール」についてまとめました。
INDEX
存在チェック
ルール | 説明 |
---|---|
required | 入力必須 |
使用例
public function rules()
{
return [
'last_name' => 'required', // 名字
'first_name' => 'required', // 名前
];
}
正規表現チェック
Laravelで用意されているバリデーションで英字かどうかのルール(alpha)は用意されています。
しかし、実際は日本語も通ってしまいます。英字のバリデーションをかける場合は正規表現でルールを作ります。
ルール | 説明 |
---|---|
regex | 正規表現にマッチするかどうか。【使用例】regex:正規表現 |
使用例
public function rules()
{
return [
'password' => 'regex:/^[a-zA-Z0-9]+$/', // 半角英数字のみ
'password' => 'regex:/^[a-zA-Z0-9-_]+$/', // 半角英数字+ハイフン+アンダーバー のみ
];
}
大きさチェック
ルール | 説明 |
---|---|
size | 指定された値であるかどうか。文字列の場合は文字の長さ。数値なら整数値。ファイルならキロバイトのサイズ。 |
min | 指定された値以上かどうか。文字にも数値にもファイルにも使える。 |
max | 指定された値以上かどうか。文字にも数値にもファイルにも使える。 |
between | 最小値から最大値の間のサイズかどうか。文字にも数値にもファイルにも使える。 |
使用例
public function rules()
{
return [
'name' => 'size:20',
'email' => 'min:7',
'message' => 'max:255',
'password' => 'between:8,20',
];
}
ファイルチェック
ルール | 説明 |
---|---|
file | ファイルであるかどうか |
image | ファイルが画像かどうか(jpg,png,bmp,gif,svg) |
dimensions | バリデーションする画像がパラメータに指定されたサイズに一致するか(min_width,max_width,min_height,width,height,ratio) |
mimes | ファイルが指定された拡張子かどうか |
使用例
public function rules()
{
return [
'thumbnail'=>'required|image|mimes:jpeg,png,jpg,gif|max:1024|dimensions:max_width=300,ratio=1/1',
];
}
文字列チェック
ルール | 説明 |
---|---|
string | 文字列であるかどうか |
メールアドレスの形式であるかどうか | |
url | URLの形式であるかどうか |
active_url | URLが有効かどうか |
ip | IPアドレスの形式かどうか |
json | json文字列であるかどうか |
timezone | タイムゾーンの文字列であるかどうか |
日付チェック
ルール | 説明 |
---|---|
date | 日付かどうか(strtotime) |
date_format:"Y-m-d" | 日付フォーマットが一致しているかどうか |
数値チェック
ルール | 説明 |
---|---|
integer | 整数かどうか |
numeric | 数値かどうか |
digits | digits:2 数値であり、値の桁数であるかどうか(例では2桁) |
digits_between | digits_between:1,5 数値であり桁数が最小値から最大値の間かどうか(例だと1~5桁) |
ユニークチェック
ルール | 説明 |
---|---|
unique | データベースのテーブルの指定したカラムで、値がユニークであるか(一意であるか)をチェック |
使用例
public function rules()
{
return [
// usersテーブルのemailカラムで一意チェック
'email' => 'unique:users'
// usersテーブルの「email_address」カラムで一意チェック
'email' => 'unique:users.mail_address'
];
}
また、その他よく使うルールを見つけたら随時追加していく予定です。
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。