songyz_validator上線,擴充套件validator這麼香麼,可以早下班和女盆友一起擼貓咯(一)

php-laobing發表於2020-07-21
  • 驗證器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 協議》,轉載必須註明作者和本文連結

相關文章