songyz_validator上线,扩展validator这么香么,可以早下班和女盆友一起撸猫咯(一)

为什么会有这个包包

  • 验证器Request中,可以编写多个验证规则
  • 验证与业务代码分离、代码更加清晰
  • 增加多种常用的验证规则 如 手机号验证、身份证验证
  • 增强、优化扩展规则,通过配置文件即可实现多种规则
  • 减少代码编写,提高代码复用 释放劳动力

packagist地址

一、安装

安装 songyz/laravel_validator 的两种方式:

1、修改composer.json

打开composer.json在require中添加以下代码:

"songyz/laravel_validator": "0.*"

执行 composer update 完成包加载。

2、composer require 方式

composer require songyz/laravel_validator

完成包加载。
请根据自己喜好,采用不同的方式进行安装。
我个人喜欢第二种方式

[danger]看下Laravel和Lumen怎么配置:

二、Laravel配置

1、修改 config/app.php

在providers中添加以下代码:

 Songyz\Providers\ValidationServiceProvider::class,
 Songyz\Providers\ValidatorConfigProvider::class,

2、发布配置文件

php artisan vendor:publish --provider="Songyz\Providers\ValidatorConfigProvider"

发布完成后,会在config目录下创建songyz_validator.php文件。

配置文件songyz_validator.php 详解请参照 配置文件


Lumen配置

1、打开bootstrap/app.php添加以下服务提供

$app->register(Songyz\Providers\ValidationServiceProvider::class);
$app->register(Songyz\Providers\ValidatorConfigProvider::class);
$app->register(Songyz\Providers\LumenFoundationServiceProvider::class);

//将以下代码取消注释
$app->register(App\Providers\AppServiceProvider::class);
$app->withFacades();
$app->withEloquent();

2、发布配置文件

由于Lumen中未提供发布功能,请到 vendor/songyz/laravel_validator/src/config 目录下 复制 songyz_validator.php 放在项目根目录 config/ 下。

倘若没有修改的需求,则可忽略此步骤

3、在bootstrap/app.php中将配置文件添加进来

$app->configure('songyz_validator');

至此项目配置完成。

三、项目初体验

1、首先创建控制器

GoodsController.php

<?php

namespace App\Http\Controllers;

use App\Http\Requests\GoodsRequest;

class GoodsController extends Controller
{

    public function add()
    {

    }

    /**
     * 获取一个商品信息
     * 验证规则 id 不能为空 且 必须是数字
     * getOne
     * @param GoodsRequest $request
     *
     */
    public function getOne(GoodsRequest $request)
    {
        print_r($request->all());

        echo "通过验证";
    }
}

2、创建验证器类

创建验证器类文件,放在什么位置?有要求吗?
是没有要求的,放在 app 目录下即可。

例如:app/Controllers/Requests app/Validator

文档中将验证器类放在 app/Controllers/Requests 文件夹下面。

<?php

namespace App\Http\Requests;

use Songyz\Validator\Lumen\FormRequest;

/**
 * 数据验证器
 * Class GoodsRequest
 * @package App\Http\Requests
 * @date 2020-06-12 22:45:18
 */
class GoodsRequest extends FormRequest
{

    protected $getOne = [
        'rules' => [
            'id' => 'required|integer'
        ],
        'messages' => [
            'id.required' => 'id不能为空',
            'id.integer' => 'id必须是数字',
        ]
    ];

}

[danger] 重要的事说三遍 验证器类中方法与控制器方法必须保持一致。

[danger] 重要的事说三遍 验证器类中方法与控制器方法必须保持一致。

[danger] 重要的事说三遍 验证器类中方法与控制器方法必须保持一致。

有图有真相

  • 没有传递 id 的提示

  • id传递 abc

  • id 传递 1

四、使用脚本创建控制器类

第一种

使用命令以下命令创建验证类

php artisan songyz:make:request

E:\phpStudy\WWW\lumen>php artisan songyz:make:request

 请输入验证器类名,支持模块化定义(Goods/Nav) 或者直接写 Nav::
 > Goods

E:\phpStudy\WWW\lumen/app\Http\Requests\GoodsRequest.php 文件创建成功229

第二种

使用命令创建Goods验证类

php artisan songyz:make:request --request_name=Goods

E:\phpStudy\WWW\lumen>php artisan songyz:make:request --request_name=Goods

E:\phpStudy\WWW\lumen/app\Http\Requests\GoodsRequest.php 文件创建成功229

参数 –force

当验证文件存在,直接覆盖,不做任何提醒。

默认情况下,文件存在,会提示用户是否覆盖。

E:\phpStudy\WWW\lumen>php artisan songyz:make:request --request_name=Goods

 E:\phpStudy\WWW\lumen/app\Http\Requests\GoodsRequest.php 文件已存在,是否替换 (yes/no) [no]:
 > yes # 当文件存在,提示用户是否覆盖

E:\phpStudy\WWW\lumen/app\Http\Requests\GoodsRequest.php 文件创建成功229

带有 –force

E:\phpStudy\WWW\lumen>php artisan songyz:make:request --request_name=Goods --force
E:\phpStudy\WWW\lumen/app\Http\Requests\GoodsRequest.php 文件创建成功229

更多内容请移步 validator验证-全文档

本作品采用《CC 协议》,转载必须注明作者和本文链接
道阻且长,行则将至
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

文件取名专业点啊,比如: 'songyz_validator'

4年前 评论
php-laobing (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!