vinicius73/laravel-model-shield

此包已废弃,不再维护。未建议替代包。

Laravel 5+ 验证模型包

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

This package is auto-updated.

Last update: 2022-07-12 21:57:32 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

安装

在您的 composer.json 中添加新的必需包

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

运行 composer updatephp composer.phar update

在 composer 命令之后,在 app/config/app.php 中添加新的服务提供者

'Vinicius73\ModelShield\ModelShieldServiceProvider',

现在,在 app/config/app.php 中添加新的别名。

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

最后,发布包的配置文件 php artisan config:publish vinicius73/laravel-model-shield

用法

您有两种用法,扩展类 Vinicius73\ModelShield\ModelShield,或使用特质 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';
}

Sentry 中的用法

使用

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

class User extends SentryModel
{
   use ShieldSentry;
}

验证规则

您的验证规则组织到单独的文件中,以更好地组织。默认情况下,文件位于 app/models/rules/,但您可以通过更改配置文件 app/config/packages/vinicius73/laravel-model-shield/config.php 中的局部变量 path 来更改它。

每个规则文件可以包含最多三组规则:defaultcreatingupdating

<?php
// 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'
   ]
];

Laravel Model Shield 的差异化在于可以为每种情况指定一组特定的规则。

  • default 是将在所有验证中始终使用的规则集。
  • creating 是在您使用模型创建新记录时将使用的规则集。
  • updating 是在您更新模型中的记录时将使用的规则集。

creatingupdating 继承自 default 规则,并在必要时替换,从而提供了广泛的可能。

自定义消息和属性名称

您还可以定义自定义错误消息和更美观的属性名称。
只需设置 custom_messagesattribute_names 的值,Shield 将完成剩余的工作。

验证

Shield 在每次保存模型时都会验证模型,无论是通过 $model->save() 还是 $model->update()

它将返回 true,表示模型有效且已成功保存。
false 表示模型无效且未保存。

错误

当模型未保存时,您可以通过方法 $model->getErrors() 获取错误消息,该方法返回一个 Illuminate\Support\MessageBag 对象。

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

if($student->save()):
 // do something
else:
 $errors = $student->getErrors();
 // do something
endif;

致谢