laravelのバリデーションをまとめていきます。
基本的な使い方はドキュメントを参照してもらうとして、もう少し細かい部分まで確認してみたいと思います。
今回は、必須などのデータの有無についてのバリデーションを確認します。
laravel/frameworkのバージョンはv9.45.1
です。
参考までに、バリデーションの実装部分のソースのリンクもつけておきます。
実装部分の前に行われる処理もありますので、注意してください。
required | 必須
必須のチェックを行います。リクエストにパラメーターが含まれていない場合は、エラーとなります。
文字列に対してはtrim
を行いますので、半角スペースのみの場合もエラーとなります。
$rules = ['parameter' => 'required']; // リクエストにパラメーターが含まれていない $data = []; Validator::make($data, $rules)->passes(); // false // 値がnull $data = ['parameter' => null]; Validator::make($data, $rules)->passes(); // false // 値が空文字 $data = ['parameter' => '']; Validator::make($data, $rules)->passes(); // false // 値が半角スペース $data = ['parameter' => ' ']; Validator::make($data, $rules)->passes(); // false // 値が空配列 $data = ['parameter' => []]; Validator::make($data, $rules)->passes(); // false $data = ['parameter' => 'a']; Validator::make($data, $rules)->passes(); // true $data = ['parameter' => ['a', 'b']]; Validator::make($data, $rules)->passes(); // true
filled | 値があること
基本的には必須(required)と同じ条件となりますが、リクエストにパラメーターが含まれていない場合はエラーとなりません。
$rules = ['parameter' => 'filled']; // リクエストにパラメーターが含まれていない $data = []; Validator::make($data, $rules)->passes(); // true // 値がnull $data = ['parameter' => null]; Validator::make($data, $rules)->passes(); // false // 値が空文字 $data = ['parameter' => '']; Validator::make($data, $rules)->passes(); // false // 値が半角スペース $data = ['parameter' => ' ']; Validator::make($data, $rules)->passes(); // false // 値が空配列 $data = ['parameter' => []]; Validator::make($data, $rules)->passes(); // false $data = ['parameter' => 'a']; Validator::make($data, $rules)->passes(); // true $data = ['parameter' => ['a', 'b']]; Validator::make($data, $rules)->passes(); // true
present | 存在すること
リクエストにパラメーターが含まれることをチェックします。
値についてのチェックは行われません。
$rules = ['parameter' => 'present']; // リクエストにパラメーターが含まれていない $data = []; Validator::make($data, $rules)->passes(); // false // 値がnull $data = ['parameter' => null]; Validator::make($data, $rules)->passes(); // true // 値が空文字 $data = ['parameter' => '']; Validator::make($data, $rules)->passes(); // true // 値が半角スペース $data = ['parameter' => ' ']; Validator::make($data, $rules)->passes(); // true // 値が空配列 $data = ['parameter' => []]; Validator::make($data, $rules)->passes(); // true $data = ['parameter' => 'a']; Validator::make($data, $rules)->passes(); // true $data = ['parameter' => ['a', 'b']]; Validator::make($data, $rules)->passes(); // true
prohibited | 禁止
リクエストがないこと(リクエストに含まれないもしくは空文字)であることをチェックします。
null
と、空配列の場合は注意が必要です。
$rules = ['parameter' => 'prohibited']; // リクエストにパラメーターが含まれていない $data = []; Validator::make($data, $rules)->passes(); // true // 値がnull $data = ['parameter' => null]; Validator::make($data, $rules)->passes(); // false // 値が空文字 $data = ['parameter' => '']; Validator::make($data, $rules)->passes(); // true // 値が半角スペース $data = ['parameter' => ' ']; Validator::make($data, $rules)->passes(); // true // 値が空配列 $data = ['parameter' => []]; Validator::make($data, $rules)->passes(); // false $data = ['parameter' => 'a']; Validator::make($data, $rules)->passes(); // false $data = ['parameter' => ['a', 'b']]; Validator::make($data, $rules)->passes(); // false
まとめ
パラメーターなし | null | 空文字 | 空配列 | 値あり | |
---|---|---|---|---|---|
必須(required) | false | false | false | false | true |
値があること(filled) | true | false | false | false | true |
存在すること(present) | false | true | true | true | true |
禁止(prohibited) | true | false | true | false | true |