我有一个名为Stats的Controller,它负责获取一些统计数据并在我的应用程序中显示它们。
Stats.php:
<?php
class Stats Extends CI_Controller{
public function index()
{
$this->load->model('Stats_model');
$return['users'] = $this->Stats_model->get_users();
$return['photos'] = $this->Stats_model->get_photos();
$return['members'] = $this->Stats_model->get_members();
$this->load->view('stats',$return);
}
}
在我的应用程序中,我的控制器总共有3个视图。主页,关于,联系方式 - Home_controller,About_controller,Contact_controller。
在这3个视图中的任何一个的开头,我都有一个部分,我想放置统计数据。因此,统计数据将显示在我的应用程序的任何页面中。
如何加载视图(统计信息)以从控制器(统计信息)获取数据而不调用它?当主视图调用时,Home控制器调用,NO统计数据。
我不想调用单独的统计信息页面。我想要在我的应用中的任何页面顶部显示统计数据。我怎样才能在CI中实现这一目标?
由于
答案 0 :(得分:0)
您可以通过在目录MY_Controller
中添加./application/core/
来自定义CI_Controller,并将Stats控制器中的代码移动到其构造函数中
像:
<?php
class MY_Controller Extends CI_Controller
{
protected $_stat_view;
public function __construct()
{
$this->load->model('Stats_model');
$return['users'] = $this->Stats_model->get_users();
$return['photos'] = $this->Stats_model->get_photos();
$return['members'] = $this->Stats_model->get_members();
//specify true to view's third parameter will make it return
//view content instead of render and display it on browser
$this->_stat_view = $this->load->view('stats',$return, true);
}
}
然后你的Home,About,Contact控制器需要扩展这个新的MY_Controller
<?php
class Home_Controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$data[stats_section] = $this->_stat_view;
//In home view just echo $stat_section
$this->load->view('home', $data);
}
}
仅供参考,您可以修改MY_
中的前缀./application/config/config.php
,设置您想要配置项目$config['subclass_prefix']
的前缀名称。