This package is not installable via Composer 1.x, please make sure you upgrade to Composer 2+. Read more about our Composer 1.x deprecation policy.

Validation package for models Laravel 5+

v1.1 2014-10-24 21:37 UTC

This package is auto-updated.

Last update: 2021-10-12 20:31:30 UTC


Latest Stable Version Total Downloads Latest Unstable Version License


Add the new required package in your composer.json

"vinicius73/laravel-model-shield": "~1.1"

Run composer update or php composer.phar update.

After composer command, add new service provider in app/config/app.php :


Now, add new aliases in app/config/app.php.

'Shield' => 'Vinicius73\ModelShield\Facades\Shield',

Finally publish the configuration file of the package php artisan config:publish vinicius73/laravel-model-shield


You have two ways to use, extending the class Vinicius73\ModelShield\ModelShield, or using the trait Vinicius73\ModelShield\Traits\Shield

use Vinicius73\ModelShield\ModelShield;

class Student extends ModelShield
   protected $table = 'students';


use Vinicius73\ModelShield\Traits\Shield;

class Student extends Eloquent
   use Shield;

   protected $table = 'students';

Usage in Sentry


use Cartalyst\Sentry\Users\Eloquent\User as SentryModel;
use Vinicius73\ModelShield\Traits\ShieldSentry;

class User extends SentryModel
   use ShieldSentry;

Validation Rules

Your validation rules are organized into separate files, to better organization. By default the files are in app/models/rules/, but you can change it by changing the local variable path of the configuration file app/config/packages/vinicius73/laravel-model-shield/config.php.

Each rules file can contain up to three sets of rules: default, creating and updating.

// students.php

return [
   'default' => [
      'name' => 'required|alpha'
   'creating' => [
      'email'    => 'required|email|unique:students',
      'password' => 'required|min:8',
   'updating' => [
      'email' => 'required|email'
   // Custom Error Messages
   'custom_messages' => [
      'required' => 'You need to report the value of :attribute :(',
      'password.min' => 'Your password must be at least 8 characters :/',
      'email.unique' => 'Oops! Your email already registered!'
   // Custom Attribute Names
   'attribute_names' => [
      'email' => 'Your name'

The differential Laravel Model Shield is the possibility of having a specific set of rules for each situation.

  • default is the set of rules that will always be used in all validations.
  • creating is the set of rules that will be used when you are creating a new record with his model.
  • updating is the set of rules that will be used when you are updating a record in your model.

creating and updating inherit the rules of default and replace if necessary, creating a wide range of possibilities.

Custom Messages and Attribute Names

You can also define custom error messages and more beautiful names to their attributes.
Just set the values for custom_messages and attribute_names, Shield will do the rest.


Shield validates the model every time you save it, either through the $model->save() or $model->update();

It will return true, indicating that the modem is valid and was successfully saved.
And false stating that the model is not valid and was not saved.


When the model is not saved you can redeem the error messages by the method $model->getErrors(), which returns an object Illuminate\Support\MessageBag

$student = new Student();
$student->name 'Amanda M.';

 // do something
 $errors = $student->getErrors();
 // do something