artesaos/shield

为 Laravel 集中管理验证规则的简单方法

安装: 700

依赖: 1

建议者: 0

安全性: 0

星标: 32

关注者: 9

分支: 5

开放问题: 0

类型:package

2.0.0 2016-08-24 18:45 UTC

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());

鸣谢