我有一段代码,我想把它放在我的CI 2.x核心文件夹中,并通过一个基本控制器重用,这个控制器将由我所有其他控制器扩展。
以下是每个控制器中出现的代码,我想转移到更中心的地方:
$data['navigation'] = generate_navigation(); // helper function
$data['country'] = code2country(); // helper function
$data['langs'] = $this->select_country_model->get_langs();
// Get copy and images for page
$query = $this->common_model->get_content('markets', 'architectural');
// Load title, description and keywords tags with data
foreach ($query as $row) {
$data['title'] = $row->page_title;
$data['description'] = $row->description;
$data['keywords'] = $row->keywords;
}
如何将它放在我的基本控制器(MY_controller.php)中,然后将数据从扩展控制器发送到我的视图。我仍然使用$data[] =
和$this->load->view('whatever', $data)
吗?
答案 0 :(得分:1)
是的,你仍然可以在$data
变量中传递它,但你需要分配它,以便你可以从其他控制器访问它,如下所示:
class MY_Controller extends CI_Controller {
var $data = array();
function __construct()
{
$this->load->model('select_country_model');
$this->load->model('common_model');
$this->data['navigation'] = generate_navigation(); // helper function
$this->data['country'] = code2country(); // helper function
$this->data['langs'] = $this->select_country_model->get_langs();
$query = $this->common_model->get_content('markets', 'architectural');
foreach ($query as $row) {
$this->data['title'] = $row->page_title;
$this->data['description'] = $row->description;
$this->data['keywords'] = $row->keywords;
}
}
}
然后只需使用MY_Controller
扩展您的控制器,您就可以使用$data
访问$this->data
。