ixudra/validation

自定义 Laravel 验证库 - 由 Ixudra 开发

1.3.0 2021-12-09 22:22 UTC

This package is auto-updated.

Last update: 2024-09-10 04:25:11 UTC


README

Latest Version on Packagist license StyleCI Total Downloads

自定义 PHP 验证库 - 由 Ixudra 开发。

此包提供各种验证规则,适用于 PHP 网络应用程序。这些规则可以轻松验证用户输入,确保其满足您设定的要求。

请注意,此包旨在用于 Laravel 框架,但并非仅限于此。这基本上意味着大多数验证方法在任何 PHP 应用程序中都是通用的,但其中一些使用 Laravel 的内部组件(例如,参见 UserValidationTrait)。除非您也在您的应用程序中包含所使用的依赖项,否则这些方法可能无法正确工作。

此包可以随时由任何人使用,但请注意,它针对我的个人定制工作流程进行了优化。它可能不完全适合您的项目,可能需要进行修改。

安装

通过 Composer 拉取此包。

{

    "require": {
        "ixudra/validation": "1.*"
    }

}

Laravel 使用方法

要使用此包与 Laravel 4 或 5,您必须扩展默认的验证器类。一旦创建了这个类,您可以将特性包含到类中,以使用验证方法。Laravel 会自动拾取验证规则并使其可用。请注意,如果您不想包含所有特性,则不需要包含所有特性。所有验证规则都是完全独立的,这允许最大程度的定制。

    use Ixudra\Validation\DateValidationTrait;
    use Ixudra\Validation\TimeValidationTrait;
    use Ixudra\Validation\ArrayValidationTrait;
    use Ixudra\Validation\PasswordValidationTrait;
    use Ixudra\Validation\CoordinateValidationTrait;

    class CustomValidator extends \Illuminate\Validation\Validator {

        use DateValidationTrait;
        use TimeValidationTrait;
        use ArrayValidationTrait;
        use PasswordValidationTrait;
        use CoordinateValidationTrait;

    }

接下来,您需要将以下内容添加到您的 routes.php 文件中,让 Laravel 知道您想使用自定义验证器类而不是默认类

    Validator::resolver(function($translator, $data, $rules, $messages)
    {
        return new CustomValidator($translator, $data, $rules, $messages);
    });

完成此操作后,您就准备就绪了。现在,您可以通过与 Laravel 已经提供给您使用默认规则相同的方式包含自定义验证规则

    $attributes = array(
        'att1'              => 'john.doe@gmail.com',
        'att2'              => 0,
        'att3'              => date('Y-m-d', strtotime('next week'))
    );

    $rules = array(
        'att1'              => 'required|email',
        'att2'              => 'required|truthy',
        'att3'              => 'required|future'
    );

    $validator = Validator::make( $attributes, $rules );
    $validator->fails();

可用的验证方法

数组验证

  • array_size: 验证数组的长度
  • one_or_more_selected: 如果数组中包含值为 true 的条目,则返回 true

日期验证

  • past: 如果值包含过去的日期,则返回 true
  • future: 如果值包含未来的日期(不包括今天),则返回 true
  • less_than_three_days_old: 如果值包含三天前的日期,则返回 true
  • today_or_later: 如果值包含未来的日期(包括今天),则返回 true

文件验证

  • unique_file_name: 如果值是唯一的文件名,则返回 true。此函数期望文件的完整路径名从 Laravel 的 public/ 目录开始

JSON 验证

  • json: 如果值包含有效的 JSON 字符串,则返回 true

数字验证

  • positive: 如果值大于 0,则返回 true
  • negative: 如果值小于 0,则返回 true

密码验证

  • valid_password: 如果值包含有效的密码(至少 6 个字符长,至少一个小写字母,至少一个大写字母和至少一个数字),则返回 true
  • correct_password: 如果值包含认证用户的正确密码(不会尝试重新认证用户),则返回 true

字符串验证

  • empty: 如果值包含空字符串,则返回 true

电话验证

  • 电话号码:如果值包含有效的(比利时)电话号码,则返回 true

时间验证

  • 时间:如果值包含有效的时间戳,则返回 true
  • 时间格式:如果值包含指定格式的时间戳,则返回 true

真值验证

  • truthy:如果值是 truefalse,则返回 true
  • true:如果值是 true,则返回 true

用户验证

  • email_belongs_to_authenticated_user:如果值包含属于认证用户的电子邮件地址,则返回 true
  • id_belongs_to_authenticated_user:如果值包含属于认证用户的ID,则返回 true

祝您玩得开心!