为了账号安全,请及时绑定邮箱和手机立即绑定

关于ThinkPHP 3.2.3 自动验证返回值

关于ThinkPHP 3.2.3 自动验证返回值

PHP
千巷猫影 2019-03-10 07:16:25
使用 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: <form class="login-container" action="__MODULE__/Login/login" method="post"> <input name="email" type="text" placeholder="Email"> <input name="password" type="password" placeholder="Password"> <input type="submit" value="Sigin"> </form>
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

楼主开了批量验证吗 批量验证才会把所有表单字段全部按照验证规则验证一遍 返回的错误信息是一个数组

查看完整回答
反对 回复 2019-03-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

后来解决了这个问题,似乎是构造方法里 $this->_db = M(模型名) 这样的写法不会启用自动验证。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 520 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信