Laravel バリデーションルール (まとめ) 

普通、入力フォームを作成するときは、クライアント側のバリデーション(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 文字列であるかどうか
email メールアドレスの形式であるかどうか
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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-基礎知識