合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
请求组件 ~~~ $request = \Yii::$app->request; ~~~ get获取参数,第二个是默认值 ~~~ $res = $request->get('id', 111); ~~~ post获取(关闭csrf) ~~~ $res = $request->post('id', '123'); ~~~ 判断请求类型 ~~~ $request->isGet $request->isPost $request->isAjax ~~~ 获取用户ip ~~~ $request->userIP ~~~ **基础示例** ~~~php class LoginForm extends \yii\base\Model{ public $username = ''; public $password = ''; public function login(){ $user = \app\model\User::findOne(['username' => $this->username]); if(!$user){ $this->addError('username', '无效的用户名或密码'); return false; } if($user->password != md5($password)){ $this->addError('username', '无效的用户名或密码'); return false; } return Yii::$app->user->login($user); } } ~~~ 这是一个打算用在登录功能上的表单模型,其中login方法就是登录的逻辑处理,为了简单演示我省略了用户名和密码长度、类型的校验之类的详细处理 然后表单模型通常都让控制器来调用的,控制器的代码可以这样写: ~~~php public function actionLogin(){ $form = new LoginForm(); $form->username = Yii::$app->request->post('username'); $form->username = Yii::$app->request->post('password'); if($form->login()){ $errorMessage = current($form->firstErrors)[0]; //成功的结果响应 }else{ //失败的结果响应 } } ~~~ **4个基本要点** 使用表单模型要注意下面4个要点: 1. 要继承[yii\\base\\Model](http://www.yiichina.com/doc/api/2.0/yii-base-model) * * * 2. 一般都提供public方法作为业务逻辑处理的方法(像上面的login方法) 一个方法处理一个业务请求,可以有多个业务,也就是多个public方法 * * * 3. 业务处理过程中,需要的客户端输入参数默认不直接从$\_GET、$\_POST数据获取,而是访问自身的属性(像上面的$username和$password两个属性) 而客户端输入的参数由控制器从GET、POST里获取,让控制器来传递给表单模型 这样就实现了:表单模型不依赖GET、POST数据,降低了依赖,只要能传来特定参数就能执行业务 也就实现了这个逻辑层可以用在更多场合(比如控制台、第三方接口、后台管理前台用户、模拟登录等) * * * 4. 业务处理过程中,如果对输入数据校验失败,报错的办法应该用`$this->addError('自定义错误标识', '错误消息');`并返回false给控制器 当然也能返回0呀null呀什么的,只要跟控制器协商好什么表示失败就行了 重要的是,控制器如果要获取失败的消息提示,可以通过`$form->firstError[0]`这个代码获取,在入门级的文章里不解释这个东西,知道怎么用就是