artesaos / shield
为 Laravel 集中管理验证规则的简单方法
2.0.0
2016-08-24 18:45 UTC
Requires
- illuminate/filesystem: ~5.1 || ~5.2 || ~5.3
- illuminate/support: ~5.1 || ~5.2 || ~5.3
This package is auto-updated.
Last update: 2024-09-13 03:04:11 UTC
README
Artesãos Shield 提供了一种简单的方式来集中管理您的验证规则。它主要设计用于解决 FormRequest 规则的实践,即在 HTTP 请求之外有效的规则。
安装
可以使用 composer 通过以下命令进行包安装
composer require artesaos/shield
Shield 不 提供门面(Facades)或服务提供者(ServiceProviders),它们不是必需的。
用法
1 - 定义规则
使用 Shield 非常简单。它首先为您的模型或其他类型的实体定义一个规则类。以下是一个示例
<?php namespace App\Domains\Users\Rules; use Artesaos\Shield\Rules class UserRules extends Rules { public function defaultRules() { return [ 'name' => 'required|min:6', ]; } public function creating($callback=null) { // returnRules method should be used // whenever the rules should be merged // with the default ones. return $this->returnRules([ 'email' => 'required|email', ], $callback); } // any other methods / actions that needs rules }
2 - 启用规则
您可以通过手动实例化规则来启用它们,但推荐的方式是在拥有规则类的类中设置一个静态属性,并使用适当的特性。
<?php // some other use statements here use Artesaos\Shield\HasRules; use App\Domains\Users\Rules\UserRules; class User extends Model { // using the rules trait use HasRules; // setting the rules class protected static $rulesFrom = UserRules::class // some model stuff here }
3 - 使用
每次需要访问规则时,都可以通过创建规则类的实例或直接使用已启用的类(主要是模型)来实现。
User::rules()->creating(); User::rules()->updating(); User::rules()->yourCustomMethodForACustomAction(); User::rules()->whatever();
在 FormRequests 中使用它的一种很好的方式是通过传递当前的 HTTP 方法,它将被转换为相应的规则方法(这是一个约定)。
// inside a form request User::rules()->byRequestType($this->getMethod()); // wherever you have a request instance User::rules()->byRequestType($request->getMethod());
鸣谢
- 作者:@vinicius73
- 版本 1 重构 @hernandev
- 许可:MIT