我正在使用CI,并且对于每个主页(例如内容),我使用以下命令在构造函数中加载特定的css文件:
$this->load->vars(array('add_css'=>array('contents')));
在我的视图中,我检查add_css数组是否存在,如果是,我加载contents.css。现在在我的控制器文件中(在本例中为contents.php),我有很多方法,虽然所有这些方法都会加载额外的contents.css,但具体的方法也会有(如果有的话)自己的add_css,例如我正在进行方法审查,我想加载额外的rating.css。我做的是:
$data['add_css'] = array('rating');
但它不起作用,因为rating.css会覆盖构造函数中的变量。
那么有什么方法可以推动阵列?我已经尝试过array_push($ data ['add_css'],'rating')但它不起作用。
由于
答案 0 :(得分:0)
我有类似的问题。读取数组中的内容,写入另一个数组,向其推送新信息,将第二个数组覆盖为数据。
答案 1 :(得分:0)
我能想到的最优雅的方式是: 的 1 即可。在你的控制器中,或者如果你有MY_Controller(它更好)添加新的受保护的(因此可以从所有控制器获得)属性,它将保留所有加载的css文件。
protected $_addCss = array();
<强> 2 即可。添加新方法以将新css文件设置到此数组:
protected function _addCssFile($file) { $this->_addCss[] = $file; return $this; //So you can chain it when adding but not necessary }
第3 即可。手动加载所有添加的css文件的新方法。
protected function _loadCssFiles() { //Load the vars then reset the property to empty array again $this->load->vars(array('add_css' => $this->_addCss)); $this->_addCss = array(); return $this; }
<强> 4 即可。在您的应用程序控制器中,您可以像这样使用它:
public function __construct() { parent::__construct(); $this->_addCssFile('contents'); } public function test() { //Chain the methods so you can add additional css files $this->_addCssFile('contents') ->_addCssFile('rating') ->_loadCssFiles() ->load->view('test'); }
<强> 5 即可。在您看来:
echo '<pre>'; print_r($add_css); echo '</pre>';
Result: Array ( [0] => contents [1] => contents [2] => rating )