【问题标题】:CodeIgniter Loading multiple variables into a viewCodeIgniter 将多个变量加载到视图中
【发布时间】:2016-01-12 15:34:59
【问题描述】:

我有一个页面在一个部分中有分页,在另一个部分中,有一个用户可以上传文件的多部分表单。目前的问题是如何加载视图?文件上传需要我加载一个错误变量,而分页需要一个数据变量。我该如何解决这个问题?谢谢。

这是我的控制器代码:

function index()
{   

    $username = $this->session->userdata('username');
    $company = $this->session->userdata('company');
    $this->load->library('pagination');
    $this->load->model('announcement');

    $config = array();
    $config['base_url']=site_url('announcements/index');
    $config['total_rows']=$this->announcement->count($username,$company);
    $config['per_page']=5;
    $this->pagination->initialize($config);
    $data['announcement'] = $this->announcement->fetch_announcement($username,$company,$config['per_page'],$this->uri->segment(3));
    $data['links'] = $this->pagination->create_links(); 



    $this->load->view('includes/admin_header');
    $this->load->view('announcements',$data);
    $this->load->view('includes/admin_footer');
}

function upload()
{
    //the name on the view must be userfile
    $username = $this->session->userdata('username');
    $company = $this->session->userdata('company');
    $title = $this->input->post('title');
    $description =$this->input->post('description');
    $path = './assets/files/'.$company.'/announcements';
    $config['upload_path'] = $path;
    $config['allowed_types'] = 'pdf';
    $config['max_size']    = '10000';
    $this->load->library('upload',$config);

    $data = array(
            'title'=>$this->input->post('title'),
            'description'=>$this->input->post('description'),
            'addedby'=>$username,
            'company'=>$company,
            'dateadded'=>date('Y-m-d'),
            'published'=>'No',
            'path'=>$path
    );

    $this->load->model('announcement');
    $this->load->library('pagination');
    $config['per_page']=5;
    if(!$this->upload->do_upload())
    {

        //$error = array('error'=>$this->upload->display_errors());
        $data = array(
        'announcement' => $this->announcement->fetch_announcement($username,$company,$config['per_page'],$this->uri->segment(3)),
        'links' => $this->pagination->create_links(), 
        'error' => $this->upload->display_errors()
        );
        $this->load->view('includes/admin_header');
        $this->load->view('announcements',$data);
        $this->load->view('includes/admin_footer');
    }
    else
    {
        $data = array(
        'announcement' => $this->announcement->fetch_announcement($username,$company,$config['per_page'],$this->uri->segment(3)),
        'links' => $this->pagination->create_links(), 
        'error' => $this->upload->display_errors()
        );
        $file_data = array('upload_data' => $this->upload->data());
        $result = $this->announcement->create($insert);
        $this->load->view('includes/admin_header');
        $this->load->view('announcements',$data);
        $this->load->view('includes/admin_footer');
    }

}

【问题讨论】:

  • 我不太明白要传递给视图的数据数组是如何使用的。我应该把它放在哪里,里面有什么?

标签: php codeigniter


【解决方案1】:

这个:

$error = array('error'=>$this->upload->display_errors());
$this->load->view('includes/admin_header');
$this->load->view('announcements',$error);

和这个是一样的:

$data = array('error'=>$this->upload->display_errors());
$this->load->view('includes/admin_header');
$this->load->view('announcements',$data);

如何命名变量并不重要。它需要是一个数组并且error键。

因此,总而言之,您可以:

$data = array(
    'announcement' => $this->announcement->fetch_announcement($username,$company,$config['per_page'],$this->uri->segment(3)),
    'links' => $this->pagination->create_links(), 
    'error' => $this->upload->display_errors()
);
$this->load->view('announcements',$data);

【讨论】:

  • 这是否意味着我将分页数据数组放入该数据数组并将其放入每个函数中?抱歉,我不太了解它的工作原理。
  • 目前,一旦我提交表单,我的分页端就会返回错误,指出我的视图中有一个名为 $announcement 的未定义变量。 $announcement 是我的 foreach 循环中使用的。
  • 已更新。希望这会有所帮助。
  • 嗨,它有效!但我不得不再次声明公告模型。但是,由于某种原因,我的上传不再显示任何错误。我试过提交没有文件的表单,但它仍然可以通过。
  • 您需要在您的 function upload() 中执行相同的操作。仅在那时存在上传错误。另外,请确保您没有覆盖现有的 $data 变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2013-03-18
  • 2011-09-28
  • 1970-01-01
相关资源
最近更新 更多