Larave、ModelのSave時にバリデーションを実装
バリデーションの実装
\app\ValidateOnSave.phpを作成。
<?php namespace App; use Illuminate\Validation\ValidationException; use Illuminate\Support\Facades\Validator; trait ValidateOnSave { protected function rules():array { return []; } public function save(array $options = []) { $rules = $this->rules(); if (count($rules)) { $subject = $this->attributes; $validator = Validator::make($subject, $rules); if ($validator->fails()) { throw new ValidationException($validator); } } return parent::save($options); } }
Model\app\Sample.phpを作成しバリデーションを実装。
<?php namespace App; class Sample extends Model use ValidateOnSave; // バリデーションルールの記載 protected function rules(){ return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; } }
実際にSampleクラスのsaveを実行してバリデーションを出してみます。。
$sample = new Sample(); $sample->save(); // バリデーションが実行されてエラーが出される
これでValidationExceptionがthrowされます。
0 件のコメント :
コメントを投稿