vinicius73 / laravel-model-shield
Laravel 5+ 验证模型包
Requires
- php: >=5.4.0
- illuminate/database: 4.*
- illuminate/support: 4.*
- illuminate/validation: 4.*
Requires (Dev)
- zizaco/factory-muff: dev-master
Suggests
- kennedytedesco/validation: Give more power to your validator.
This package is auto-updated.
Last update: 2022-07-12 21:57:32 UTC
README
安装
在您的 composer.json 中添加新的必需包
"vinicius73/laravel-model-shield": "~1.1"
运行 composer update
或 php 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
来更改它。
每个规则文件可以包含最多三组规则:default
、creating
和 updating
。
<?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 是在您更新模型中的记录时将使用的规则集。
creating
和updating
继承自default
规则,并在必要时替换,从而提供了广泛的可能。
自定义消息和属性名称
您还可以定义自定义错误消息和更美观的属性名称。
只需设置 custom_messages
和 attribute_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;