我可能在PHP中遗漏了一些知识,似乎无法使其正常工作。
我有application/config/cfg.backend.php
这个值:
$config['head_meta'] = array(
'stylesheets' => array(
'template.css'
),
'scripts' => array(
'plugins/jquery-2.0.3.min.js',
'plugins/bootstrap.min.js'
),
'end_scripts' => array(
'plugins/jquery-ui.js',
'plugins/jquery.dataTables.min.js',
'template.js'
)
);
我加载了所有必要的脚本和css文件,因此每当我需要扩展其中一些数组时,我只需使用array_push()
函数,就像我在application/controllers/backend/Categories.php
中所做的那样:
class Categories extends Backend_Controller{
function __construct(){
parent::__construct();
// Load dependencies
$head_meta = config_item('head_meta');
array_push($head_meta['end_scripts'], 'plugins/redactor.min.js', 'categories.js');
array_push($head_meta['stylesheets'], 'redactor.css');
var_dump($head_meta['end_scripts']);
}
// THE REST OF THE CLASS ...
}
通过做var_dump($head_meta['end_scripts'])
,我看到array_push()
完成了他的工作,但我的脚本没有加载,我不知道为什么,我被困在这里。
array (size=5)
0 => string 'plugins/jquery-ui.js' (length=20)
1 => string 'plugins/jquery.dataTables.min.js' (length=32)
2 => string 'template.js' (length=11)
3 => string 'plugins/redactor.min.js' (length=23)
4 => string 'categories.js' (length=13)
有什么建议我做错了吗?
====更新====
我有一个位于applications/views/backend/templates/template.php
的主模板文件,我在页面底部foreach()
加载end_scripts
:
<?php foreach($this->config->item('end_scripts', 'head_meta') as $end_scripts):?>
<script src="<?php echo base_url();?>assets/js/<?php echo $end_scripts;?>" type="text/javascript"></script>
<?php endforeach;?>
要将特定视图加载到主templates/template.php
,我执行此操作:
// Insert catched data into the component view of main template
$data['component'] = $this->load->view('backend/category_list', $componentData, TRUE);
// Load a component view into the main template
$this->load->view('backend/templates/template', $data);
答案 0 :(得分:1)
Codeigniter Config类在类中加载配置变量,使它们不可变,而不调用$this->config->set_item()
。要从控制器向config类中的数组添加变量,需要修改数组,然后将变量设置回config类,然后才能从程序的其他位置访问它们。
class Categories extends Backend_Controller{
function __construct(){
parent::__construct();
// Load dependencies
$head_meta = config_item('head_meta');
array_push($head_meta['end_scripts'], 'plugins/redactor.min.js', 'categories.js');
array_push($head_meta['stylesheets'], 'redactor.css');
$this->config->set_item('head_meta', $head_meta);
var_dump($this->config->get_item('head_meta'));
}
// THE REST OF THE CLASS ...
}