独自Validation作っちゃお☆@Laravel5
お早うございます。 安定剤のせいで体調不良な空瓶です。
動機
LaravelのValidationってめっちゃ便利!でも変に組み合わせると見にくいし可読性に欠けてしまう。
→自分で作れるんやない?
概要
他サイトやQiitaにて似たような記事はありますが、備忘録も兼ねてまとめておきます。
1.既存のValidaterを継承したクラスの作成
2.Providerの定義と登録
3.使用
1.既存のValidaterを継承したクラスの作成
場所は任意です。
今回は app/Validator を作成して、その中に作ります。
(ディレクトリ名称を[Valdiators]にしようか迷いましたが、中身は1つだけなのでいいかな..複数作る予定もないし。)
<?php namespace App\Validator; class CustomValidation extends \Illuminate\Validation\Validator { public function validateCodeStringCheck($attribute, $value, $parameters) { if (ctype_alnum($value)) { if (ctype_alpha(substr($value, 0, 1))) { return true; } } return false; } }
この関数名ですが、[validate]はプレフィックスになっており、[codeStringCheck]というValidation名として使用します。
また、エラーメッセージの使用はValidation名をスネークケースにして使用します。(サンプルは後ほど。)
2.Providerの定義と登録
php artisan make:provider ValidatorServiceProvider
でProviderを作りましょう。atisanに頼ります。
そして、config/app.phpに追加します。
<?php ... 'providers' => [ ... App\Providers\ValidatorServiceProvider::class, // custom ],
3.使用
<?php namespace App\Http\Requests; use App\Http\Requests\Request; class CompanyRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'mail_address' => 'email|required', 'company_code' => 'required|min:4|max:20|codeStringCheck', 'company_name' => 'required|max:20', ]; } public function messages() { return[ 'company_code.code_string_check' => '英字から始まる半角英数字の文字列を入力してください。' ]; } } php```