1、运行LNMP环境,进入Mysql,查看我们前期创建的hlong_user数据表,注意这两个信息:(1)用户名:username(2)密码:password
2、访问我们前面创建的登陆页面 web/index.php?r=login,注意页面的两个input输入框分别对应了数据库中的username和password:
3、在页面中右击选择“查看元素”,分别查看两个input中name的名称:(1)name="Hlong炽扃仄呦User[username]"(2)name="HlongUser[password]"我们有理由怀疑这个“username”和“password”对应的就是数据库中的名称。
4、为了验证我们步骤3中的疑问,我们修改数据表中的username 成 username2 ,再重复步骤3,查看效果:注意:修改视图文件。
5、打开app\models\HlongUser.php,加入如下代码:public $field1;publi艘早祓胂c $field2;public $_map = ['username'=>$field1,'password'=>$field2];public function mymap($data){foreach($data as $k=>$v){if(array_search($k,$this->_map)){$map[$key]=$v;}else{$map[$k]=$v;}}$this->attributes = $map;}
6、修改视图文件 views\login\index.php:$form->field($model,'field1');$form->field($model,'field2');
7、修改控制器文件controllers\LoginController.php:我们先尝试打印一下$post,可以看到我们成功接收到了修改后的数据,接下来我们需要做的事将field1,field2分别映射到username和password并验证其合法性(参考 rules 方法)
8、继续修改LoginController.php文件:var_dump($mode盟敢势袂l->attributes());//添加修改之前的验证$model->myapp($post);//添加修改内容var_dump($model->attributes());//添加修改之后的验证结果如下:
9、我尝试找到Yii2.0内置的关于字段映射的官方用法,但是一直没有找到。另外一个框架—ThinkPHP倒是有相关用法,但是也有人评价说是“鸡肋,食之无味,弃之可惜”,“仁者见仁智者见智”吧,希望有想法的朋友能相互交流经验,谢谢各位。