CodeIgniter:如何设置页面中常见变量的默认值?

CodeIgniter:如何设置页面中常见变量的默认值?,codeigniter,Codeigniter,我正在用CI建立一个网站,使用一个简单的模板系统 这是我的基本模板: $this->load->view('includes/header'); $this->load->view($main_content); $this->load->view('includes/footer'); 我有一组变量要传递给我的视图,我知道我可以这样做: $data['title'] = 'title goes here'; $data['main_content'] =

我正在用CI建立一个网站,使用一个简单的模板系统

这是我的基本模板:

$this->load->view('includes/header');
$this->load->view($main_content);
$this->load->view('includes/footer');
我有一组变量要传递给我的视图,我知道我可以这样做:

$data['title'] = 'title goes here';
$data['main_content'] = 'name of page goes here';
$this->load->view('template', $data);
$data = Home::$default_data;
$data['main_content'] = 'member_login_view'; // I can now declare only the relevant variables. all the rest will have the default values
$this->load->view('includes/template', $data);
到目前为止,一切都很好。但是我希望上面的变量集具有默认值,这样我就不必在每次加载模板时声明整个变量集

我提出的解决方案是在主控制器下声明公共静态变量,如下所示:

public static $default_data = array(
    'title' => 'Generic Title Goes Here',
    'main_content' => 'home_view'
);
然后我可以像这样加载我的视图:

$data['title'] = 'title goes here';
$data['main_content'] = 'name of page goes here';
$this->load->view('template', $data);
$data = Home::$default_data;
$data['main_content'] = 'member_login_view'; // I can now declare only the relevant variables. all the rest will have the default values
$this->load->view('includes/template', $data);
这个方法工作得很好,但我有一个问题:我想设置为默认值的一些变量不是静态的。例如,在标题中,我有一个统计行,显示我网站上注册用户的数量,以及我数据库中的产品数量。所以我称之为

$data['stats'] = $this->products_model->get_stats();

有没有办法为这些变量设置默认值,这样我就不必在每次加载页面之前调用模型中的方法了?

找到了解决方案。希望这是一个好的。把它写下来,希望它能帮助别人

我扩展了主控制器,并将所有公共变量放在那里——静态和动态。我将它们声明为受保护,因此它们在所有视图中都可用

这是
application/core/MY_Controller.php

class Home_Controller extends CI_Controller {

//Class-wide variable to store stats line
protected $stats;
protected $title;
protected $main_content;

public function __construct() {

    parent::__construct();

    //Put stats in Class-wide variable
    $this->stats = $this->products_model->get_stats();

    //Store stats in $data
    $data->stats = $this->stats;

    $data->title = 'Generic Website title';

    $data->main_content = 'home_view';

    //Load variables in all views
    $this->load->vars($data);

}
}


我将主控制器的第一行更改为
class Home extends Home\u controller
,而不是
class Home extends CI\u controller

,感谢您共享解决方案