使用预定义变量加载codeigniter视图

时间:2012-12-29 16:19:29

标签: codeigniter

我不知道以下是否可行。如果没有其他建议表示赞赏。

在几乎所有的控制器中,我都会加载一些默认视图。例如页眉,页脚和菜单。

我想为每个视图自动加载某些变量。

如果我以标题为例。在我的标题中,我将始终加载一组$css脚本和一组$javascript个文件。

  

$ javascript [] ='js / jquery.js';   $ javascript [] ='js / jqueryui.js';

但另外,根据当前页面逻辑,我可能想要将另一个javascript文件添加到我的$javascript变量中。

  

$ javascript [] ='js / custom.js';

理想情况下,我希望这些变量作为数据自动插入到视图的负载中。

换句话说,我只想打电话:

  

$这 - >负载>查看( '标题');

如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

创建MY_Controller然后在那里添加一个公共数组,然后从MY_Controller扩展

class MY_Controller extends CI_Controller  {
     public $data;

     function __construct() {
         parent::__construct();
         $this->data['MYVAR'] = 'Something';
     }
}

在你的其他控制器中你就是这样做的

class SomeClass extends MY_Controller {
    function __construct () {
        parent::__construct();
    }

     function index () {
         $this->data['SomeOtherVar'] = 'xxx';
         $this->load->view('viewname', $this->data);
     }
  }

答案 1 :(得分:0)

您可以在Controller中使用$ this-> load-> vars。 我在my_controller中使用它,所有控制器都从MY_Controller扩展 例如

<?php
    class MY_Controller extends Controller{
        public function __construct(){
            parent::__construct();
            $this->setGlobalViewVariables();
        }

        public function setGlobalViewVariables(){
            $result = array();
            $result['value1'] = 'value1';
            $result['value2'] = 'value1'; 
            $this->load->vars($result);
        }
    }
?>

答案 2 :(得分:0)

你应该为此创建一个hook,这很简单