本人最近刚开始学ThinkPHP,在练习的过程中遇到了一些问题。下面是我在进行TP自动验证时遇到的问题!
表名是test_member
Controller代码如下:
1<?php 2namespace Regiter\Controller; 3use Think\Controller; 4class IndexController extends Controller { 5 public function index(){ 6 $this->display(); 7 } 8 public function register($email="",$password="",$cpassword='',$name="",$phone="",$address=""){ 9 $rdata = array('email'=>$email,'password'=>$password,'name'=>$name,'phone'=>$phone,'adress'=>$address); 10 $User = D("Member"); 11 if (!$User->create($rdata)){ 12 // 如果创建失败 表示验证没有通过 输出错误提示信息 13 $this->ajaxReturn($User->getError()); 14 }else{ 15 //$User->add($rdata); 16 $this->success($User->select()); 17 // 验证通过 可以进行其他数据操作 18 } 19 20 } 21}
Model代码如下:
1<?php 2/** 3 * Created by PhpStorm. 4 * User: BaByDragon 5 * Date: 14-8-1 6 * Time: 下午2:48 7 */ 8namespace Regiter\Model; 9use Think\Model; 10class MemberModel extends Model{ 11 protected $tableName = 'member'; 12 protected $_validate = array( 13 array('email','require','验证码必须!'), // 都有时间都验证 14 array('name','','帐号名称已经存在!',0,'unique',1), 15 array('name','checkName','帐号错误!',1,'function',4), // 只在登录时候验证 16 array('password','checkPwd','密码错误!',1,'function',4), // 只在登录时候验证 17 ); 18} 19?>
结果自动验证怎么也不成功!最后发现Model文件名错了!TP模型层的文件名应是表名(驼峰法命名,并且首字母大写)+.class.php。而我却写成了表名+.php。
通过本次教训我总结了TP中使用自动验证时许注意:D方法的参数是Model的名字而不是表的名字!