В итоге я перевесил и реализовал свой собственный класс Output
. (Помещается в папку «application / core /»)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Output extends CI_Output
{
private $JavascriptFiles = array();
private $JavascriptTags = "";
private $CSSFiles = array();
private $CSSTags = "";
//Add a javascript file to the array.
public function javascript($File = null)
{
if($File && !in_array($File ,$this->JavascriptFiles))
{
$this->JavascriptFiles[] = $File;
}
}
//Add a css file to the array.
public function css($File = null)
{
if($File && !in_array($File ,$this->CSSFiles))
{
$this->CSSFiles[] = $File;
}
}
//Build the javascript tags
private function buildtags()
{
if(!empty($this->JavascriptFiles))
{
foreach($this->JavascriptFiles as $File) {
$this->JavascriptTags .= "<script type=\"text/javascript\" src=\"$File\"></script>\n";
}
}
if(!empty($this->CSSFiles))
{
foreach($this->CSSFiles as $File) {
$this->CSSTags .= "<link type=\"text/css\" href=\"$File\" rel=\"stylesheet\" media=\"all\" />\n";
}
}
}
//Override the main output function that sends content to the browser
//and slap in the javascript and css where we need it.
function _display($output = '')
{
$this->buildtags();
$this->final_output = str_replace("{VIEW_SPECIFIC_JAVASCRIPT}", $this->JavascriptTags, $this->final_output);
$this->final_output = str_replace("{VIEW_SPECIFIC_CSS}", $this->CSSTags, $this->final_output);
// SNIP----
// Rest of method code follows from here
}
Я добавил теги {VIEW_SPECIFIC_JAVASCRIPT}
и {VIEW_SPECIFIC_CSS}
в мой <head>
вид в соответствующих местах.
Затем я могу добавить javascript и css в <head>
из любого представления в моем приложении, используя следующие методы внутри представлений:
$this->output->javascript("/js/mycoolscript.js");
$this->output->css("/js/mycoolcss.js");
Simple.