fadion / rule
Laravel的表达式验证规则构建器。
Requires
- php: >=5.4.0
- illuminate/support: ~5.1
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-21 20:25:51 UTC
README
这是一个简单的Laravel包,提供了一种构建验证规则的简洁替代方法。它使用您已经了解的Laravel验证知识,并在此基础上进行扩展。
而不是这个
$rules = [ 'username' => 'required|alpha', 'email' => 'required|email' ];
您将编写
Rule::add('username')->required()->alpha(); Rule::add('email')->required()->email(); $rules = Rule::get();
哪种方法更易于阅读或编写是个人偏好的问题,所以我不偏不倚。然而,使用Rule提供了两个主要优势
- 拼写错误的规则名称、不存在的规则或缺失的参数将引发致命错误。相比之下,当您使用“reqiured”而不是“required”时,Laravel的规则将静默失败,并提供没有信息。
- IDE建议和自动完成。每个规则都是一个真实、有文档的方法,您的IDE可以轻松识别。结合Laravel IDE Helper,您很少需要打开Validator文档。
安装
- 将包添加到您的composer.json文件中,然后运行
composer update
{
"require": {
"fadion/rule": "~1.1"
}
}
-
将
Fadion\Rule\RuleServiceProvider::class添加到您的config/app.php文件中,在providers数组内。 -
在您的
config/app.php文件中的aliases数组内添加一个新别名:'Rule' => Fadion\Rule\Facades\Rule::class。
Laravel 4请使用版本
1.0
用法
如果您已经使用过Laravel的Validator,那么您已经知道如何使用Rule。它只是改变了编写规则的方式,但验证过程保持完全相同。
完整的验证示例
$inputs = Input::all(); Rule::add('username')->required()->alpha(); Rule::add('email')->required()->email(); $validator = Validator::make($inputs, Rule::get()); if ($validator->fails()) { Return::back()->withInput()->withErrors($validator); }
带有参数的规则
规则参数作为简单方法参数处理。参数可以有一个或多个,具体取决于规则,其中一些也可以是数组(如:in、not_in、mimes等)。
Rule::add('date')->date_format('mm/dd/YYYY'); Rule::add('age')->between(5, 15); Rule::add('role')->in(['Admin', 'Moderator', 'Editor']);
存在和唯一
exists和unique是特殊情况,因为它们有少数定义和文档化的参数,以及动态的where子句。
Rule::add('username')->exists('users'); Rule::add('username')->exists('users', 'name'); Rule::add('username')->exists('users', 'name', 'id', 10); Rule::add('email')->unique('users'); Rule::add('email')->unique('users', 'email_address', 10); Rule::add('email')->unique('users', 'email_address', 10, 'account_id', 1);
自定义规则
Rule以与预定义规则相同的方式处理自定义规则。它甚至接受参数。
Validator::extend('foo', function($attribute, $value, $parameters) { return $value == 'foo'; }); Rule::add('name')->required()->foo();
数组规则
Laravel验证输入为array的规则已被重命名为is_array()。由于“array”是PHP中的保留字,不能用作方法名,因此进行了重命名。
Rule::add('languages')->is_array();
方法名
方法可以写成snake_case(Laravel接受的规则名称)或camelCase。两种情况行为完全相同,所以使用您感觉更好的。
所以,以下方法等价
Rule::add('date')->date_format('Y-m-d'); Rule::add('date')->dateFormat('Y-m-d'); Rule::add('username')->alpha_dash(); Rule::add('username')->alphaDash();
属性名称
Laravel有一个选项可以使用自定义属性来别名输入名称,作为构建更好错误消息的一种方式。Rule提供了创建它们的简单方法。
Rule::add('name', 'Your name')->required(); Rule::add('email', 'Your email')->required()->email(); $validator = Validator::make(Input::all(), Rule::get()); // Apply attributes $validator->setAttributeNames(Rule::getAttributes());
消息
您不可能开始编写表达式的规则,同时将消息保持为数组。Rule将以非常优雅且易于使用的方式处理这些。只需在规则后添加一个message()方法即可。
Rule::add('email') ->required()->message("Email shouldn't be empty.") ->email()->message("Email appears to be invalid."); Rule::add('password') ->required()->message("Password shouldn't be empty.") ->between(5, 15)->message("Make that password more secure!"); $rules = Rule::get(); $messages = Rule::getMessages();