首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误:在第189行的CModel.php中找不到‘CModel.php’类

问致命错误:在第189行的CModel.php中找不到‘CModel.php’类
EN

Stack Overflow用户
提问于 2014-07-11 14:00:59
回答 1查看 347关注 0票数 1

每当我试图保存模型而不使用post表单,但直接从excel文件中获取数据并将其分配给模型属性时,我就会得到这个错误(致命错误:类'CModelEvent‘’没有找到),如下所示:

代码语言:javascript
复制
   public function actionImportFile() {
        if (isset($_POST['User'])) {
            Yii::import('application.extensions.yii-phpexcel.PHPExcel', true);
            $objPHPExcel = PHPExcel_IOFactory::load($_FILES['User']['tmp_name']['import_file']); 
            $objWorksheet = $objPHPExcel->getActiveSheet();
            $model = new User('create');
            $model->firstname = $objWorksheet->getCellByColumnAndRow(1, 2)->getValue();
            $model->lastname = $objWorksheet->getCellByColumnAndRow(2, 2)->getValue();
            $model->password = 'password';
            $model->email = 'nt@yahoo.com';
            $model->usertype = -1;
            $model->status = 1;
            if ($model->save())
                $this->redirect(array('index'));
        }
    }

规则的定义如下:

代码语言:javascript
复制
  public function rules() {
        return array(
            array('firstname, lastname, email, status, usertype, password', 'required'),
        );
    }

我认为这个错误是由于验证失败造成的,因为当我试图将模型保存为$model->save(false)时,它会保存记录,但我想应用验证规则。如果有人知道这个错误,请帮助我.

我还发现了另一件事,如果我按照下面的方式实现我的上述功能:

代码语言:javascript
复制
public function actionImportFile() {
            if (isset($_POST['User'])) {
               // Yii::import('application.extensions.yii-phpexcel.PHPExcel', true);
               // $objPHPExcel = PHPExcel_IOFactory::load($_FILES['User'] ['tmp_name'['import_file']); 
              //  $objWorksheet = $objPHPExcel->getActiveSheet();
                $model = new User('create');
                $model->firstname = 'test'; //$objWorksheet->getCellByColumnAndRow(1, 2)->getValue();
                $model->lastname = 'test2';//$objWorksheet->getCellByColumnAndRow(2, 2)->getValue();
                $model->password = 'password';
                $model->email = 'nt@yahoo.com';
                $model->usertype = -1;
                $model->status = 1;
                if ($model->save())
                    $this->redirect(array('index'));
            }
        }

然后,它保存了模型,但是上传$_FILES['User'] ['tmp_name'['import_file']就会产生错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-16 11:57:09

我通过在导入函数spl_autoload_unregister(array('YiiBase', 'autoload'));之前添加Yii::import('application.extensions.yii-phpexcel.PHPExcel', true);和在导入函数之后添加spl_autoload_register(array('YiiBase', 'autoload'));来解决这个问题。整个函数如下所示,现在工作正常:

代码语言:javascript
复制
 public function actionImportFile() {
        if (isset($_POST['User'])) {
            spl_autoload_unregister(array('YiiBase', 'autoload'));
            Yii::import('application.extensions.yii-phpexcel.PHPExcel', true);
            spl_autoload_register(array('YiiBase', 'autoload'));
            $objPHPExcel = PHPExcel_IOFactory::load($_FILES['User']['tmp_name']['import_file']); 
            $objWorksheet = $objPHPExcel->getActiveSheet();
            $model = new User('create');
            $model->firstname = $objWorksheet->getCellByColumnAndRow(1, 2)->getValue();
            $model->lastname = $objWorksheet->getCellByColumnAndRow(2, 2)->getValue();
            $model->password = 'password';
            $model->email = 'nt@yahoo.com';
            $model->usertype = -1;
            $model->status = 1;
            if ($model->save())
                $this->redirect(array('index'));
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24699573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档