简化Code​​Igniter控制器

时间:2011-08-04 21:39:40

标签: codeigniter

我有一段代码,我想把它放在我的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)吗?

1 个答案:

答案 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