jedrzej/validator-extended-syntax

Laravel 4/5 包,为 Laravel 的验证模块添加验证否定功能

0.0.4 2017-03-22 17:29 UTC

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}}
    ];