加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 将数组数据分配给Yii中的模型属性

发布时间:2020-12-13 17:08:02 所属栏目:PHP教程 来源:网络整理
导读:我正在研究一种激活新成员的方法.我收到以下错误: 未定义的偏移量:1 错误发生在包含以下内容的行上: $模型 – 用户名= $数据[1]; 有没有Yii方法让这项工作更好? 我是php,oop和Yii的新手,所以任何帮助都会非常感激! 该方法基本上从用户获取get请求. get
我正在研究一种激活新成员的方法.我收到以下错误:

未定义的偏移量:1

错误发生在包含以下内容的行上:

$模型 – >用户名= $数据[1];

有没有Yii方法让这项工作更好?

我是php,oop和Yii的新手,所以任何帮助都会非常感激!

该方法基本上从用户获取get请求. get运行此方法并包含用于验证其帐户的密钥.验证存储在与密钥同名的文件中.文件内部是一个以管道分隔的行,其中包含日期,用户名,电子邮件,salt和密码哈希.在读取文件并在管道上爆炸数据后,我需要将数据分配给模型,然后将其保存到数据库中.

...

        $model=new Users;

        $model->activation_key=$_GET['key'];

        $path_to_validation_files = Yii::app()->basePath."/data/new_member_validations";
        $validation_file = $path_to_validation_files . "/".$model->activation_key.".dat";

        if(is_readable($validation_file) && !empty($validation_file))
        {
            if($fp = fopen($validation_file,'r'))
            {
                while(!feof($fp))
                {
                    $line = fread($fp,filesize($validation_file));
                }
                fclose($fp);
                $data = explode('|',$line);

                if(!empty($data)){
                    $model->username=$data[1];
                    $model->email=$data[2];
                    $model->salt=$data[3];
                    $model->password=$data[4];
                } else {
                    throw new CHttpException(500,'Validation file contained no data.');
                }

            } else {
                throw new CHttpException(500,'Cannot open validation file.');
            }
        } else {
            throw new CHttpException(404,'Validation file not found,not readable,or empty.');
        }


...

解决方法

您可以使用CActiveRecord类的attributes属性来加载关联数组.

例如,假设您有一个具有属性foo和bar的模型,并且您有一个数组数据(‘foo’=> 1,’bar’= 2)

您可以设置$myModel-> attributes = data,它将遍历数组并将属性分配给模型(但仅当这些属性具有验证规则时)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读