关于ThinkPHP 3.2.3 自动验证返回值

使用 ThinkPHP 自动验证, create() 返回始终很奇怪,通过验证返回一个空数组,未通过验证返回 falsegetError() 中也能获取到错误,可这样就没办法判断是否正确了。难道还要判断 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>
千巷猫影
浏览 521回答 3
3回答

吃鸡游戏

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

翻翻过去那场雪

后来解决了这个问题,似乎是构造方法里 $this->_db = M(模型名) 这样的写法不会启用自动验证。
打开App,查看更多内容
随时随地看视频慕课网APP