请求组件
~~~
$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]`这个代码获取,在入门级的文章里不解释这个东西,知道怎么用就是
- 目录
- 配置
- 简介
- 别名
- gii
- 配置项
- 模型
- 简介
- 增删改查
- AR和model
- 模型事件
- 场景
- query查询
- 增删改
- AR查询器
- 模型关系定义
- AR模型连表查询
- fields
- where拼接
- 模块
- 创建模块
- 控制器
- 表单
- 跳转
- 响应
- 验证器
- Action
- 组件
- url
- 分页
- 验证码
- 缓存
- 文件上传
- 预启动组件
- 事件
- 自定义组件
- redis
- 日志
- 行为
- cookie和session
- 基础知识
- 创建一个类
- 配置一个类
- object基类
- component组件类特性
- phpstorm无法更改php等级
- url地址美化
- 过滤器
- 请求处理
- 请求组件
- 响应组件
- header
- 用户登录
- 实现IdentityInterface接口
- 登录
- 自动检测登录
- 获取用户信息
- 访问行为追踪
- phpstorm+postman断点调试