Swoft-Api项目部署七:验证器

swoft验证器,比thinkphp的验证器难搞很多。非注解式验证就很简单了

 

一:创建验证器

位置:app/Validator/TestValidator.php

<?php declare(strict_types=1);
/**
 * This file is part of Swoft.
 *
 * @link     https://swoft.org
 * @document https://swoft.org/docs
 * @contact  group@swoft.org
 * @license  https://github.com/swoft-cloud/swoft/blob/master/LICENSE
 */

namespace App\Validator;

use App\Annotation\Mapping\AlphaDash;
use Swoft\Validator\Annotation\Mapping\IsInt;
use Swoft\Validator\Annotation\Mapping\IsString;
use Swoft\Validator\Annotation\Mapping\Validator;

/**
 * Class TestValidator
 *
 * @since 2.0
 *
 * @Validator(name="TestValidator")
 */
class TestValidator
{
    /**
     * @IsString()
     *
     * @var string
     */
    protected $name = 'defualtName';

    /**
     * @IsInt(message="type must Integer")
     *
     * @var int
     */
    protected $type;

    /**
     * @IsString()
     * @AlphaDash(message="Passwords can only be alphabet, numbers, dashes, underscores")
     *
     * @var string
     */
    protected $password;
    /**
     * @IsString(message="tille 必须为字符串")
     *
     * @var string
     *
     */
    protected $title;

    /**
     * @IsString(message="content 必须为字符串")
     *
     * @var string
     */
    protected $content;
}

二:加载验证器

'httpDispatcher'     => [
        // Add global http middleware
        'middlewares'      => [
            \App\Http\Middleware\FavIconMiddleware::class,
            \Swoft\Http\Session\SessionMiddleware::class,
            // \Swoft\Whoops\WhoopsMiddleware::class,
            // Allow use @View tag
            \Swoft\View\Middleware\ViewMiddleware::class,
            \App\Http\Middleware\AuthMiddleware::class
        ],
        'afterMiddlewares' => [
            \Swoft\Http\Server\Middleware\ValidatorMiddleware::class,
            \App\Http\Middleware\AfterMiddleware::class
        ]
    ],

 

三:控制器调用验证器(非注解形式)

/**
     * 仅验证TestValidator验证器中的 type 字段
     * @RequestMapping()
     * @param Request $request
     *
     * @return array
     */
    public function t36(Request $request)
    {
        $data= [
            'name'=>1,
            'type'=>'sdfsdfsdfsdfsdf'
        ];
        # 只验证type字段 
        $s = validate($data,"TestValidator",['type']);

        # 此处会验证所有字段
        # $s = validate($data,"TestValidator");
        var_dump($s);
    }

输出结果(直接会打印字符串):type must Integer

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值