♥ 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.