简介部分
1. model与Form的区别
model是映射数据表的结构
Form是映射input框 表单模型的映射
释义
举个例子:比如数据库字段中没有重复密码的字段 而在前端html我们需要借助js等验证方式来确认密码两次输入的正确性 此时 我们只需要在modelForm中定义这个变量(重复密码),而不需要在model(数据表的映射)中加入
2. 完善注册功能
添加确认密码方法
1.在m..Form中定义确认密码的公共变量
2.在rules操作中作为限制级 将规则写入 且规则保证密码与确认密码必填和一致
代码 [['password','rePassword'],'required'], #前提一定要定义确认密码的变量
[['password', 'rePassword'], 'string', 'min' => 6],
添加验证码方法
1.在m..Form中定义验证码的变量
2.在rules操作中写入captcha
代码 如下图
经过以上两个model层处理 将数据映射到视图层view
需要注意的是 调用了验证码的组件 所以要使用验证码的命名空间 use yii\captcha\Captcha;
验证码 前台展示代码 <?= $form->field($model, 'verifyCode')->widget(Captcha::className()) ?> widget引入验证码组件
确认密码 前台展示代码 <?= $form->field($model, 'rePassword')->passwordInput() ?>
拓展 : 为了避免用户名有规则并且不易灌水 可以添加正则来限制用户输入不正确的用户名 提高整体效率 示范代码如下
['username', 'match','pattern'=>'/^[(\x{4E00}-\x{9FA5})a-zA-Z]+[(\x{4E00}-\x{9FA5})a-zA-Z_\d]*$/u','message'=>'用户名由字母,汉字,数字,下划线组成,且不能以数字和下划线开头。'],
示例图
最终效果
完成!