Laravelのバリデーションで悩んだ話
やりたいこと
4桁の数字を入力するフォームで、バリデーションをかきたい!
正規表現
- minが最小値でmaxが最大値ね~ふむふむ!
- …あれ?
- ぴったり○桁って、自分で書かなきゃ?
- こ、こんな感じか?
$validateRules = ['number'=>'regex:[0-9]{4}'];
- 実行結果から、うまくいってなさそう(正規表現うろ覚えすぎる)
- 行頭・行末を指定してあげたら、なんとかいけた…これが正しい書き方なのか不安はあるけれど…!
$validateRules = ['number'=>'regex:/^[0-9]{4}$/'];
エラーメッセージ
- おや?
- 組み込みバリデーションルールじゃないので、エラーメッセージがいい感じにでないな?
- ということで公式の書き方を確認
公式のお手本
$validator = Validator::make($input, $rules, $messages = [
'required' => 'The :attribute field is required.',
]);
- なるほどね…つまりこんな感じかな?
$validator = Validator::make($input, $rules, $messages = [
'regex:/^[0-9]{4}$/' => 'numberは4桁で入力してください。',
]);
- うーん、失敗!!
- キーは「regex」だけでよかった!!
$validator = Validator::make($input, $rules, $messages = [
'regex' => 'numberは4桁で入力してください。',
]);
感想
ITの技術職に転職して約1カ月…アウトプットのために今日から記事を書き始めました!
レベルが低くて毎日泣いちゃいそうですが、ちょっとずつ頑張りたいです!