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