当前位置:Gxlcms > PHP教程 > thinkphp中create方法自动创建表单数据之后,会把表单中的字段当作模型对象的属性保存吗?

thinkphp中create方法自动创建表单数据之后,会把表单中的字段当作模型对象的属性保存吗?

时间:2021-07-01 10:21:17 帮助过:15人阅读

控制器中的代码:

if(IS_POST){
            if($model->validate($model->_login_validate)->create()){
                
                if($model->login()){
                    if($res = session('returnUrl')){
                        session('returnUrl',null);
                        $returnUrl = $res;
                    }else{
                        $returnUrl = U('/');
                    }
                    
                    $this->success('登陆成功!',$returnUrl);
                    die;
                }
            }
            $this->error($model->getError());
        }

模型中的代码:

public function login(){
        var_dump($this);die;    //这里打印$this并没有找到username和password这两个属性,可是为什么下面的$username可以取到值呢??
        $username = $this->username;
        $password = $this->password;
        $model = M('Member');

        $where['username'] = $username;
        $user = $model->where($where)->find();
        。。。
}

回复内容:

控制器中的代码:

if(IS_POST){
            if($model->validate($model->_login_validate)->create()){
                
                if($model->login()){
                    if($res = session('returnUrl')){
                        session('returnUrl',null);
                        $returnUrl = $res;
                    }else{
                        $returnUrl = U('/');
                    }
                    
                    $this->success('登陆成功!',$returnUrl);
                    die;
                }
            }
            $this->error($model->getError());
        }

模型中的代码:

public function login(){
        var_dump($this);die;    //这里打印$this并没有找到username和password这两个属性,可是为什么下面的$username可以取到值呢??
        $username = $this->username;
        $password = $this->password;
        $model = M('Member');

        $where['username'] = $username;
        $user = $model->where($where)->find();
        。。。
}

是存在data里面的 用get读取不存在的属性 然后到data里面 同样 可以set 设置属性 也就是对象 后面直接加属性

 public function __get($name) {
        return isset($this->data[$name])?$this->data[$name]:null;
    }
    
    public function __set($name,$value) {
        // 设置数据对象属性
        $this->data[$name]  =   $value;
    }

会的,虽然没这样写过 不过我打印过create后的对象 发现有这些属性

$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->create($data);
// 创建完成数据对象后可以直接读取数据
echo $User->name;
echo $User->email;
// 也可以直接修改创建完成的数据
$User->name = 'onethink'; // 修改name字段数据
$User->status = 1; // 增加新的字段数据

http://www.kancloud.cn/manual...
从3.2.3文档里找了这么一段。你create()后 你所访问的 $this->name; 这应该是被创建后的属性
你var_dump($model);试试。。

人气教程排行