apdev/lawn-mower

v2.2.0 2023-07-18 09:28 UTC

This package is auto-updated.

Last update: 2024-09-18 12:08:36 UTC


README

LawnMower 是一个轻量级库,用于 GET、POST 和 FILE 验证,基于 Laravel 和 Zend 验证器。其主要组件包括 RequestValidatorRuleFileUpload 对象。

安装


$ composer require apdev/lawn-mower

基本用法

<?php

use LawnMower\Request;


$request = new Request();

if($request->hasData()){ //or hasPost(), hasGet(), hasFiles()

    $valid_data = $request->validate([
        'field_name' => 'rule_name|other_rule_name:with_param|rule_name',
        'other_field' => [
            'rule_name',
            'some_other_rule',
            $rule_instance, //instance of LawnMower\Rule::class
            ...
        ],
        ...
    ]);


    if($request->isValid()){
        //do stuff
    }else{
        $errors = $request->errors();
        $input = $request->all();
        $specific_fields = $request->only([ 'field_name', 'some_other_field', ... ]);
    }
}

请求对象

请求对象自动收集所有 $_GET$_POST$_FILES 数据,并将其传递给一个 Validator::class 实例。处理 $_FILES 时将其视为 FileUpload::class 实例,这是一个方便处理文件上传的类。

规则

可用规则

注意:顺序无关紧要,所有规则在执行前都会被评估。

  • required - 字段必须存在且不为空,不为空字符串、空数组或空文件。
  • nullable - 字段可以省略。
  • bail - 在此过滤器之后,一旦过滤器失败,就停止执行检查。
  • email - 字段必须是有效的电子邮件。
  • url - 字段必须是有效的 URL。
  • alpha_num - 字段必须只包含字母和数字。
  • alpha - 字段必须只包含字母。
  • numeric - 字段必须只包含数字。
  • digits:size - 字段必须只包含数字字符,且长度必须精确为 size
  • mimes:extension1,extension2,... - 字段必须是有效的 FileUpload 且与指定的 extensions 匹配。扩展名由文件的 MIME 类型及其二进制数据猜测。
  • file - 字段必须是有效的文件。
  • size:value - 字段大小必须精确为 value。与数组、字符串和文件一起使用。
  • in:value1,value2,... - 字段必须是指定的值之一。
  • gte:value - 字段必须大于或等于 value。与数字一起使用。
  • gt:value - 字段必须大于 value。与数字一起使用。
  • lt:value - 字段必须小于 value。与数字一起使用。
  • lte:value - 字段必须小于或等于 value。与数字一起使用。
  • min:value - 字段大小必须大于或等于 value。与数组和文件一起使用。
  • max:value - 字段大小必须小于或等于 value。与数组和文件一起使用。
  • integer - 字段必须是有效的整数。
  • boolean - 字段必须是有效的布尔值。接受的值有 truefalse01'true''false'
  • string - 字段必须是字符串。
  • date - 字段必须是有效的日期。
  • slug - 字段必须只包含小写字母、数字和 -
  • recaptcha:secret - 字段是 Google Recaptcha 字段,如果有效,它将自动从验证数据中删除。

有三种方法可以将 Rules 传递给 Validator:让我们看看文件字段。

通过字符串

$valid_data = $request->validate([
    'file_field' => 'required|file|mimes:pdf,docx'
]);

通过字符串数组

$valid_data = $request->validate([
    'file_field' => [ 'required', 'file', 'mimes:pdf,docx' ],
]);

通过实例数组(或字符串和实例的混合)

$valid_data = $request->validate([
    'file_field' => [
        'required',
        'file',
        new LawnMower\Rules\Mimes([ 'pdf','docx' ]),
    ],
]);

最后一种方法在您需要将 $variable 作为参数传递给规则时非常有用。完整的 string => RuleClass 映射在 RulesMapping.php 文件中。

自定义规则

可以通过扩展标准 LawnMower\Rule::class 并将实例传递给 Validator 来使用自定义规则。

<?php
use LawnMower\Rule;

class MyRule extends Rule {

    protected $error_message = "###FIELD### has my custom error message, with ###PARAMS### too.";

    public function isValid():bool {

        echo $this->value; //value to be checked
        echo $this->params; //array of params passed by constructor

        //my stuff goes here

        return true; // or false
    }
}

文件上传

这个类提供了一些方便的方法,帮助您处理通过表单上传的文件。如果文件不是通过 $file->store($path) 方法存储,它将在对象析构时自动删除。

...

//get instance of LawnMower\FileUpload::class
$upload = $valid_data['file_upload'];

$upload->isEmpty(); //checks if file is empty
$upload->getPath(); //returns full file path
$upload->getFilename(); //returns filename.ext without path
$stored_file = $upload->store("path/to/file/destination"); //stores file and returns a LawnMower\File::class instance;

由 apdev 开发的包,2021 年。