例として、日本の郵便番号を 123-4567 という形式で入力させるバリデーションルールを定義する。
バリデーションルールの作成
$ php artisan make:rule JapaneseZip
app/Rules/JapaneseZip.php
<?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'); } }
コントローラから呼び出し
$this->validate($request, [ 'zip' => ['required', 'string', new JapaneseZip], .... ]);
参考サイト
【Laravel】バリデーションの拡張|Laravel|PHP|開発ブログ|株式会社Nextat(ネクスタット)
https://nextat.co.jp/staff/archives/124