Swoft-Api项目部署七:验证器
woft验证器,比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