## 请求扩展 请求扩展是进行数据验证与权限验证的功能组件。 [TOC] ## 创建 执行以下命令后系统会在 system/request 目录中创建 TestRequest.php 请求服务类。 ``` php hd make:request TestRequest ``` 请求服务类代码如下: ``` namespace system\request; use houdunwang\request\build\FormRequest; use houdunwang\validate\Validate; class TestBRequest extends FormRequest { /** * 权限验证 * @return bool */ public function authorize() { return true; } /** * 验证规则 * 验证规则的使用请参数"自动验证"组件 * @return array */ public function rules() { return []; } } ``` ## 验证规则 在请求服务类中的 rules()函数中返回验证规则,具体验证规则请参考 [自动验证](http://www.kancloud.cn/houdunwang/hdphp3/215225) ,以下是一个定义验证的示例。 具体的验证处理方式,请参数 [自动验证](http://www.kancloud.cn/houdunwang/hdphp3/215225) 中的处理方式章节。 ``` public function rules() { return [ ['username', 'required', '帐号不能为空', Validate::MUST_VALIDATE], ['password', 'required', '密码不能为空', Validate::EXISTS_VALIDATE], ['code', 'captcha', '验证码输入错误', Validate::EXISTS_VALIDATE], ]; } ``` ## 控制器中使用 可以使用HDPHP框架提交的依赖注入特性,完成请求组件注册。 在依赖注入过程中系统会自动根据 Request 组件定义的验证规则进行验证。 ``` namespace app\system\controller; use system\request\UserRequest; class Entry extends Controller { public function login(UserRequest $request) { p($request()); } } ``` 获取所有请求数据使用 $request()或 $request->all(),获取其中的一个值可以使用 $request->username 或 $request['username']