如何在所有页面上加载相同的内容?

时间:2016-10-03 06:48:36

标签: php codeigniter

我想通过调用一次全局加载数据,而不是在控制器中的每个函数内调用相同的数据。 我做了

MY_Controller.php
<?php

class MY_Controller extends CI_Controller {

     public function __construct() {
         parent::__construct();
         $this->load->helper(array('form', 'url','file'));
         $this->load->model('common/common_model');
         $data['header_menus'] = $this->common_model->categoryMenus();
     }
}

这个文件在核心文件夹内,在控制器文件夹中有一个控制器,我做了

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Home extends MY_Controller {

在家庭控制器中加载函数时如何在视图中加载$ data ['header_menus']我是否需要在函数中再次使用该变量做什么?

2 个答案:

答案 0 :(得分:1)

在View文件夹中创建一个视图并在控制器中加载该视图,在控制器中进行更改:

例如,您的视图名称是视图文件夹中的display_view.php:

<强> MY_Controller.php

<?php

class MY_Controller extends CI_Controller {

     public function __construct() {
         parent::__construct();
         $this->load->helper(array('form', 'url','file'));
         $this->load->model('common/common_model');
         $data['header_menus'] = $this->common_model->categoryMenus();
         $this->load->view('tour/view',$data);
     }
}

<强> display_view.php

<?php
if(!empty($header_menus)) {
  extract($header_menus);
}
print_r($header_menus); // you can get all the info here
?>

Load View in Codeigniter

答案 1 :(得分:0)

检查继承。

$data['header_menus'] = $this->common_model->categoryMenus();

必须是

$this->data['header_menus'] = $this->common_model->categoryMenus();

在扩展控制器中,您需要使用

调用它
$this->data['header_menus'];

也可以将$this->data数组用于其他变量,并使用以下内容调用视图:

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

宣读文档hereherehereherehere