- 控制器中使用
- @Validate
- @Validate
控制器中使用
如果想在控制器中使用验证器很简单,只需要是一个注解 @Validate 就行
- 一个
action可以定义多个@Validate使用多个验证器 - 多个验证器按照配置顺序验证
如下定义一个 action, 同时使用默认验证器和自定义验证器
use Swoft\Http\Message\Request;use Swoft\Http\Server\Annotation\Mapping\Controller;use Swoft\Http\Server\Annotation\Mapping\RequestMapping;use Swoft\Validator\Annotation\Mapping\Validate;use App\Validator\TestValidator;/*** Class TestController** @since 2.0** @Controller(prefix="test")*/class TestController{/*** @RequestMapping(route="validator")** @Validate(validator=TestValidator::class, fields={"name", "type"})* @Validate(validator="userValidator")** @param Request $request** @return array*/public function validator(Request $request): array{$data = $request->getParsedBody();$key = ;return $data;}}
$request->getParsedBody()所有解析数据$request->parsedBody('key', 'default')指定 KEY 解析数据
@Validate
- validator 指定验证器名称
- fields 指定验证器里面验证的字段,这样可以高效的重复使用验证器
- params 自定义验证器使用,传递给自定义验证器的参数
注意
$request->getParsedBody()获取的请求数据,是已经通过验证器修改的数据。验证器可以支持表单、请求 body 数据验证,但是 body 验证需要定义对应的数据解析器,框架默认提供 JSON/XML 类型数据解析器,详细介绍,请参考 Http Server 章节。
