在Codeigniter中,将$data值从一个函数传递到同一控制器内的另一个函数


Passing $data value from onefunction to another within same controller in Codeigniter

我在一个控制器中有两个函数。

  1. 它连接到表单并进行验证
  2. 图像上传的回调函数

这只会插入数据库中一个映像的路径。如果我从回调函数回显print_r,它会显示所有图像,但只显示一个来自验证函数的图像。

    // Some Validation
    } else {
        $this->fileupload_check();
        $data['uploadedimage'] = $this->upload->data();
        $image_name = $data['uploadedimage']['file_name'];
        //echo '<pre>';
        //print_r($this->upload->data());
        $data['uploadedimage'] = $image_name;
        $this->load->model('admin/model_users');
        if($query = $this->model_users->insert_property_details($data)) {
        redirect('dashboard/property-successfully-posted');
    }

和回调图像上传:

public function fileupload_check() {
$number_of_files = sizeof($_FILES['uploadedimages']['tmp_name']);
$files = $_FILES['uploadedimages'];
for($i=0;$i<$number_of_files;$i++) {
  if($_FILES['uploadedimages']['error'][$i] != 0) {
    $this->form_validation->set_message('fileupload_check', 'At least 1 image needs to be uploaded in jpeg, png or gif format only.');
    return FALSE;
  }
}
$this->load->library('upload');
$config['upload_path'] = FCPATH . 'uploads/';
$config['allowed_types'] = 'gif|jpg|png';
for ($i = 0; $i < $number_of_files; $i++) {
  $_FILES['uploadedimage']['name'] = $files['name'][$i];
  $_FILES['uploadedimage']['type'] = $files['type'][$i];
  $_FILES['uploadedimage']['tmp_name'] = $files['tmp_name'][$i];
  $_FILES['uploadedimage']['error'] = $files['error'][$i];
  $_FILES['uploadedimage']['size'] = $files['size'][$i];
  $this->upload->initialize($config);
  if ($this->upload->do_upload('uploadedimage')) {
    $data['uploadedimage'] = $this->upload->data();
    $image_name = $data['uploadedimage']['file_name'];
    $data['uploadedimage'] = $image_name;
  } else {
    $this->form_validation->set_message('fileupload_check', $this->upload->display_errors());
    return FALSE;
  }
}
return TRUE;
}

我试图将值从"Callback image upload"函数传递到验证函数,但它只传递一个图像,而不是所有选定的图像。

尝试这种编码。。。

public function fileupload_check() {
$Error_bool = TRUE;
$Error = '';
$number_of_files = sizeof($_FILES['uploadedimages']['tmp_name']);
$files = $_FILES['uploadedimages'];
for($i=0;$i<$number_of_files;$i++) {
  if($_FILES['uploadedimages']['error'][$i] != 0) {
    $Error_bool = FALSE;
    $Error = 'At least 1 image needs to be uploaded in jpeg, png or gif format only.';
  }
}
$this->load->library('upload');
$config['upload_path'] = FCPATH . 'uploads/';
$config['allowed_types'] = 'gif|jpg|png';
for ($i = 0; $i < $number_of_files; $i++) {
  $_FILES['uploadedimage']['name'] = $files['name'][$i];
  $_FILES['uploadedimage']['type'] = $files['type'][$i];
  $_FILES['uploadedimage']['tmp_name'] = $files['tmp_name'][$i];
  $_FILES['uploadedimage']['error'] = $files['error'][$i];
  $_FILES['uploadedimage']['size'] = $files['size'][$i];
  $this->upload->initialize($config);
  if ($this->upload->do_upload('uploadedimage')) {
    $data['uploadedimage'] = $this->upload->data();
    $image_name = $data['uploadedimage']['file_name'];
    $data['uploadedimage'] = $image_name;
  } else {
    $Error_bool = FALSE;
    $Error =  $this->upload->display_errors();
  }
}
if($Error_bool == FALSE) {
    $this->form_validation->set_message('fileupload_check', $Error);
    return FALSE;
} else {
    return TRUE;
}

}

最简单的方法是创建一个session并在其中发送$data,然后在另一个函数中访问该会话。

如果您想销毁会话

,您可以在此之后销毁会话

我不得不对它进行一些更改才能使它工作,

  1. 我将整个回调函数代码直接包含在FORM函数中,并完全删除了回调函数

这也有助于另一件事。早些时候,在表单验证错误的情况下,图像被上传到上传文件夹,但现在没有了。

  1. 我不得不在do_upload中做一些小的更改(通过添加$I&内爆),这帮助我在数据库行中插入多个图像路径

整个脚本可以在已解决的中找到