例として、日本の郵便番号を 123-4567 という形式で入力させるバリデーションルールを定義する。
バリデーションルールの作成
1 |
$ php artisan make:rule JapaneseZip |
app/Rules/JapaneseZip.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class JapaneseZip implements Rule { /** * Create a new rule instance. * * @return void */ public function __construct() { // } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { return preg_match("/^[0-9]{3}-[0-9]{4}$/", $value); } /** * Get the validation error message. * * @return string */ public function message() { //return 'The :attribute must be XXX-XXXX.'; return trans('validation.japanese_zip'); } } |
コントローラから呼び出し
1 2 3 4 |
$this->validate($request, [ 'zip' => ['required', 'string', new JapaneseZip], .... ]); |
参考サイト
【Laravel】バリデーションの拡張|Laravel|PHP|開発ブログ|株式会社Nextat(ネクスタット)
https://nextat.co.jp/staff/archives/124