Php 设置$this->;然后,方法中的数据将被取消设置

Php 设置$this->;然后,方法中的数据将被取消设置,php,codeigniter,variables,controller,this,Php,Codeigniter,Variables,Controller,This,我用codeigniter上传了一个图像,我用下面的方法 if(isset($_FILES['product_image']['name'])) { //some setup needed $config['upload_path'] = "./media/images/products"; $config['allowed_types'] = "png|gif|jpg|jpeg"; $config[

我用codeigniter上传了一个图像,我用下面的方法

if(isset($_FILES['product_image']['name'])) {
            //some setup needed
            $config['upload_path'] = "./media/images/products";
            $config['allowed_types'] = "png|gif|jpg|jpeg";
            $config['max_width'] = 1490;
            $config['max_height'] = 400;
            //make sure the library is running with clean config
            $this->upload->initialize($config);
            //do the upload
            if(!$this->upload->do_upload('product_image')){
                $this->data['image_error'] = $this->upload->display_errors();
                $this->template->build('/admin/products/create', $this->data);
            } else {
                $this->data['image_data'] = $this->upload->data();
                //die(print_r($this->data));
                $this->template->build('/admin/products/create', $this->data);
            }
        }
因此,基本上我会检查$_文件中是否有内容,然后在上传数据的过程中,如果分配了
$此数据['image_data']]
,则进行上传。但是,当我开始处理数据,即在数据库中保存文件名时,我无法访问
$this->data['image\u data'].
以下是我试图使用它的方式

if($this->input->post("submit_create") == "Save") {
    die(print_r($this->data['image_data']));
}
但是我得到了以下错误:

消息:未定义索引:图像\u数据


为什么我认为将东西分配给$this使它们不仅可以在整个方法中访问,而且可以在整个控制器中访问?

我认为,在您的示例中,此时打印
图像\u数据时:

if($this->input->post("submit_create") == "Save") {
    die(print_r($this->data['image_data']));
}
您实际上应该使用
$image\u data

if($this->input->post("submit_create") == "Save") {
    die(print_r($image_data));
}

在类中,针对$this实例化变量确实应该允许对象的同一实例中的其他方法访问这些变量。你能发布整个课程吗?你可以在这里看到它,它扩展了我的_控制器,可以在这里看到,只要快速查看代码,我猜
如果(!$this->upload->do_upload('product_image')){
的计算结果为true,因此文件数据从未被实例化,只是猜测而已,这不是我可以终止脚本并查看
$this->data['image\u data']
上传后,
如果(submit\u post==“Save”)
的情况(第64行)你什么时候在使用$this->input->post检查?我的意思是,在第一个片段中,你注释掉了die(print_r..),post()检查是在那里发生的吗?你能更清楚地说明你在哪里检查$this->data数组吗?哎呀!也许是因为CodeIgniter实例还没有被构造出来。
$this->CI=&get_instance()
如果
语句正在运行,那么
在哪里?它在控制器内部(OP发布了完整的代码,我也错过了那些链接);而且,顺便说一句,$this->data只是一个类属性,它无论如何都可以在任何类中工作(不仅仅是Ci超对象)啊,现在我在评论中看到了这些链接-谢谢!…我不确定他是否在助手或库中,在这种情况下(据我所知),他必须
get_instance()
。我只是…这里没有帮助-/