将数据从我的控制器codeigniter传递到我的视图中

时间:2016-03-10 21:35:45

标签: php codeigniter templates variables

我为我的项目构建了一个布局模板(参见布局功能)。模板系统将页眉,页脚和左侧添加到页面,还将当前视图呈现为"middle"

问题是我无法正确包含$data变量。这是为了让我的数据打印出来,我需要像下面的选项1一样包含它。

选项1

  $this->load->view('profile_view', $data);

布局功能

                public function layout () {
                $this->template['header'] = $this->load->view('layout/header', $this->Front_End_data, true);
                $this->template['left'] = $this->load->view('layout/left', $this->Front_End_data, true);
                $this->template['middle'] = $this->load->view($this->middle, $this->Front_End_data, true);
                $this->template['footer'] = $this->load->view('layout/footer', $this->Front_End_data, true);
                $this->load->view('layout/index', $this->template);

这可以渲染模板,但我需要$data包含

function index()
{
    $data = array();
    $this->load->model('user_profile/profiles_model');
    $query = $this->profiles_model->get_bank();

    if (!empty($query)) {
        $data['records'] = $query;
    }

    $this->middle = 'profile_view';
    $this->layout();
}    

对此最好的解决方案是什么?

更新

我尝试了一些似乎部分工作的东西,但是复制了两次视图,一个在正确的位置有一个错误,任何想法?

function index()
    {
        $data = array();
        $this->load->model('user_profile/profiles_model');
        $query = $this->profiles_model->get_bank();

        if (!empty($query)) {
            $data['records'] = $query;
        }
//        $this->middle = 'profile_view';
        $this->load->view($this->middle = 'profile_view',$data);
        $this->layout();
//        $this->layout($data);
    }

更新

这也有效,但不是最好的方式

function index()
    {
        $data = array();
        $this->load->model('user_profile/profiles_model');
        $query = $this->profiles_model->get_bank();

        if (!empty($query)) {
            $data['records'] = $query;
        }

//        $this->load->view($this->middle = 'profile_view',$data);
        $this->template['middle'] = $this->load->view ($this->middle = 'profile_view',$data, true);
        $this->layout();

//        $this->middle = 'profile_view';
//        $this->layout($data);
    }

3 个答案:

答案 0 :(得分:0)

使用Phil Sturgeon创建的this library。它非常棒,易于设置和使用。我使用codeigniter构建的任何项目都是我添加的第一件事。为什么在已经有飞机可用的情况下重新创建轮子?

答案 1 :(得分:0)

为什么不简单地将$data传递给布局方法?

    $this->layout($data);

答案 2 :(得分:0)

它不优雅,但这是我如何解决它

$this->template['middle'] = $this->load->view ($this->middle = 'pages/update_view',$data, true);
        $this->layout();