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

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

WBOY
WBOYOriginal
2016-09-08 08:43:58949Durchsuche

控制器中的代码:

<code>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());
        }
</code>

模型中的代码:

<code>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();
        。。。
}
</code>

回复内容:

控制器中的代码:

<code>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());
        }
</code>

模型中的代码:

<code>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();
        。。。
}
</code>

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

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

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

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

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn