使用 ThinkPHP 自动验证, create() 返回始终很奇怪,通过验证返回一个空数组,未通过验证返回 false,getError() 中也能获取到错误,可这样就没办法判断是否正确了。难道还要判断 create() 的返回值 is_array() ?翻了很多栗子,发现写法都一样的,可结果却大相径庭。
UserModel:
namespace Common\Model;
use Think\Model;
/**
*
*/
class UserModel extends Model
{
private $_db;
protected $_validate = [
['email', 'require', '邮箱不正确'],
['password', 'require', '密码不正确']
];
function __construct()
{
$this->_db = M('users');
}
public function getUser($email)
{
return $this->_db->where("email = '%s'", $email)->find();
}
}
UserController:
namespace Admin\Controller;
use Think\Controller;
/**
*
*/
class LoginController extends Controller
{
/**
* 登录页
*/
public function index()
{
$this->display();
}
public function login()
{
if (IS_POST) {
$User = D('User');
// var_dump($User->create());
if (!$User->create()){ // 始终走这里边
$this->ajaxReturn([
'status' => 0,
'msg' => $User->getError(),
'data' => null
]);
} else {
$user = $User->getUser(I('post.email'));
var_dump($user);
}
}
}
}
html:
本文探讨了使用ThinkPHP框架进行自动验证时遇到的问题,详细分析了create()方法的行为,包括其返回值及如何正确判断验证结果。同时分享了一个具体的用户登录验证案例。

3410

被折叠的 条评论
为什么被折叠?



