我不知道以下是否可行。如果没有其他建议表示赞赏。
在几乎所有的控制器中,我都会加载一些默认视图。例如页眉,页脚和菜单。
我想为每个视图自动加载某些变量。
如果我以标题为例。在我的标题中,我将始终加载一组$css
脚本和一组$javascript
个文件。
$ javascript [] ='js / jquery.js'; $ javascript [] ='js / jqueryui.js';
但另外,根据当前页面逻辑,我可能想要将另一个javascript文件添加到我的$javascript
变量中。
$ javascript [] ='js / custom.js';
理想情况下,我希望这些变量作为数据自动插入到视图的负载中。
换句话说,我只想打电话:
$这 - >负载>查看( '标题');
如何实现这一目标?
答案 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,这很简单