0

我不知道以下是否可行。如果没有其他建议,我们将不胜感激。

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

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

如果我以标题为例。在我的标题中,我总是会加载一组$css脚本和一组$javascript文件。

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

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

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

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

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

$this->load->view('header');

这怎么可能实现?

4

3 回答 3

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);
     }
  }
于 2012-12-29T17:01:45.263 回答
0

您可以在控制器中使用 $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);
        }
    }
?>
于 2012-12-29T16:23:33.023 回答
0

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

于 2012-12-29T16:30:07.057 回答