jedrzej / validator-extended-syntax
Laravel 4/5 包,为 Laravel 的验证模块添加验证否定功能
0.0.4
2017-03-22 17:29 UTC
Requires
Requires (Dev)
- codeception/codeception: 2.0.*
- codeception/specify: *
- mockery/mockery: ^0.9.4
This package is auto-updated.
Last update: 2024-08-25 23:02:41 UTC
README
此包通过以下方式扩展 Laravel 的验证语法:
- 别名验证规则配置
- 否定验证规则
- 使用自动替换的占位符
Composer 安装
将以下行添加到您项目中 composer.json
文件中
"jedrzej/validator-extended-syntax": "0.0.3"
或者在您项目根目录的命令行中运行以下命令
composer require "jedrzej/validator-extended-syntax" "0.0.3"
用法
为了扩展验证器语法,您需要在 config/app.php
中注册 ValidationServiceProvider
'providers' => [ ... /* * Custom proviers */ 'Jedrzej\Validation\ValidationServiceProvider' ];
别名验证规则
可以将常用规则配置别名为允许重用,这是编写自定义验证规则的替代方法。
// validate if string is a hex calue Validator::alias('hex', 'regex:/^[0-9a-fA-F]+$/'); $rules = [ 'value' => 'hex' ]; $validator = Validator::make($data, $rules); // passing arguments to aliases // validate number is a positive integer no larger than 100 Validator::alias('positive_limited', 'between:1,?'); $rules = [ 'value' => 'positive_limited:100' ]; $validator = Validator::make($data, $rules); // record exists with is_active flag set Validator::alias('active_exists', 'exists:?,?,is_active,1'); $rules = [ 'user_id' => 'active_exists:users,id' ]; $validator = Validator::make($data, $rules);
否定验证结果
在定义验证规则时,您可以通过在规则名称前加感叹号来否定选定的规则。被否定的验证规则将在未否定的规则通过时失败,反之亦然。
$rules = ['string' => 'min:3']; //validate if string is at least 3 characters long $data = ['string' => 'abcde']; $result = Validator::make($data, $rules)->passes(); // TRUE $rules = ['string' => 'min:3']; $data = ['string' => 'ab']; $result = Validator::make($data, $rules)->passes(); // FALSE $rules = ['string' => '!min:3']; $data = ['string' => 'abcde']; $result = Validator::make($data, $rules)->passes(); // FALSE $rules = ['string' => '!min:3']; $data = ['string' => 'ab']; $result = Validator::make($data, $rules)->passes(); // TRUE
验证规则中的占位符
如果需要使用另一个字段的值作为参数来验证一个字段,您可以在规则定义中使用 {{parameter_name}}
占位符而不是参数值。将传递对应字段的值到验证器而不是占位符。如果对应值在验证数据集中缺失,则从 Config 中获取该值。如果配置中缺失,则使用 NULL
。
$rules = [ 'user_id' => 'exists:users,id' 'email' => 'unique:users,email,{{user_id}}', 'age' => 'min:{{app.min_age}} ];