Push Array to $data variable to be passed to views
I'm using CI, and for every main page (for example contents) I load a specific css file in the constructor using :
$this->load->vars(array('add_css'=>array('contents')));
In my views, I check if the add_css array exists or not, if yes, I load the contents.css. Now in my controller file (in this case contents.php), I have lots of methods, and while all of them will always load the additional contents.css , specific methods will have (if any) their own add_css too, for example when I'm开发者_运维知识库 on method review, I want to load additional rating.css. What I did was :
$data['add_css'] = array('rating');
But it doesn't work because the rating.css overwrites the vars in the constructor.
So is there any way I can push the array? I've tried array_push($data['add_css'],'rating') but it doesn't work.
Thanks
The most elegant way I can think off would be this:
1. In your controller or if you have MY_Controller(it's much better) add new protected (so it is available from all controllers) property that will keep all loaded css files.
protected $_addCss = array();
2. Add new method for setting new css files to this array:
protected function _addCssFile($file)
{
$this->_addCss[] = $file;
return $this; //So you can chain it when adding but not necessary
}
3. New method for manual loading of all added css files.
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. In your application controller you can use it like this:
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. In your view:
echo '<pre>'; print_r($add_css); echo '</pre>';
Result:
Array
(
[0] => contents
[1] => contents
[2] => rating
)
I had a similar problem. Read what's in the array, write to another array, push new info to it, overwrite the second array to data.
加载中,请稍侯......
精彩评论