♥ Made with <love/> And I love <code/>
Model validation - Validates the model data. *Only for laravel applications.
An easy validator option for your eloquent models. Also have flexibility for additional codes that might be executed on before and after validation.
composer require theriddleofenigma/laravel-model-validation
Here user model is mentioned as an example. You could use this in any model you want.
use Enigma\ValidatorTrait; class User extends Model { use ValidatorTrait; /** * Boot method. */ public static function boot() { parent::boot(); // Add this method for validating the current model on model saving event static::validateOnSaving(); } public $validationRules = [ 'name' => 'required|max:10', 'email' => 'required|email', ]; public $validationMessages = [ 'name.required' => 'Name field is required.', 'email.email' => 'The given email is in invalid format.', ]; public $validationAttributes = [ 'name' => 'User Name' ]; /** * Code to be executed before the validation goes here. */ public function beforeValidation() { // Some code goes here.. } /** * Code to be executed after the validation goes here. */ public function afterValidation() { // Some code goes here.. } }
You can control the data which gets validated by adding validationData method.
/** * Validation data to be validated. * * @return array */ public function validationData(array $data) { // Here $data is the value of $this->getAttributes(), feel free to use your own code to produce the data. Ex: $this->toArray(), $this->getOriginal(), etc., $data["name"] = strtolower($data["name"]); // Note: This wouldn't affect your actual model data which is going to persist in DB. return $data; }
You could mention the validation rules, attributes and messages as a property as well as method.
/** * Validation rules to validate. * * @return array */ public function validationRules() { // You can process your code here and return the rules as however you want. return [ 'name' => 'required|max:10', 'email' => 'required|email', ]; } /** * Custom messages to replace the validation messages. * * @return array */ public function validationMessages() { // You can process your code here and return the messages as however you want. return [ 'name.required' => 'Name field is required.', 'email.email' => 'The given email is in invalid format.', ]; } /** * Custom attribute names to replace the validation attribute name. * * @return array */ public function validationAttributes() { return [ 'name' => 'User Name' ]; }
You could mention the validation only for creating itself or on any model event just add $model->validate()
.
/** * Boot method. */ public static function boot() { parent::boot(); // You can mention like this for validating the model on custom events as your wish self::creating(function($model){ $model->validate(); }); // Or you can make use of the alias `self::validateOnCreating()`. }
Refer the available methods in the ValidationTrait.
Laravel Model Validation is open-sourced software licensed under the MIT license.