2011-11-20 20 views
0

我无法想出解决以下问题的方法。比方说,我有一个库(.php)文件放在codeigniter的库文件夹中,但该库有一些与之关联的JavaScript:我有库“grid.php”,它有“grid.js”。当我加载库“网格”的Codeigniter - 包含应用程序/库文件夹内的JavaScript(脚本标签)

<script src="base_url(). 'application/libraries/grid/grid.js'></script>

是在我已经使用了网格的页面回荡。问题是“.js”文件被禁止访问,因此无法使用。 我不想把我的网格放在codeigniter的根级别,因为我不能用$ this-> load-> library('grid')加载它,我不想将我的js文件手动移动到根目录然后在每次使用网格时手动包含它们,我只是想将网格文件夹复制并粘贴到我需要的每个项目中,而当我使用它时,它会自动包含js链接。请帮我:)

我看到了“拒绝所有”驻留在应用程序和系统文件夹的.htaccess文件,但我不希望删除或者(如果它是造成问题的原因):d

+1

嗨,我不认为有是从库中访问js文件的方式。但是,还有另一种方法可以工作。只需将你的js文件放在根目录下,并创建一个辅助函数并在这里加载你的库,并像通常那样加载你的js。然后你可以在任何你想要的地方调用这个函数。你不需要每次分配js。我认为这可能会对你有所帮助。 – Sakthi

回答

1

我看到了“拒绝所有”驻留在应用程序和系统文件夹的.htaccess文件,但我不希望删除或者(如果它是造成问题的原因):d

这是很好的,你不想要删除它,这有助于保持您的应用程序(以及敏感信息,如数据库密码)无法通过http访问。但是,这正是您无法以这种方式访问​​JavaScript文件的原因。

你必须咬紧牙关。将js文件移动到可访问的目录中。

我看不出有什么理由必须手动编写标签,如果您正在使用PHP - 您可能需要考虑编写或采用某种模板/资产库,以便其他库可以“挂钩”并动态添加js/css到模板。

简单的例子:

class Template { 

    private $js; 

    function add_js($src) 
    { 
     $this->js[] = $src; 
    } 

    function get_js() 
    { 
     $out = ''; 
     foreach ($this->js as $src) 
     { 
      $out .= '<script src="'.$src.'"></script>'; 
     } 
     return $out; 
    } 

} 
  • 确保网格可以访问CI实例。最常见的方法是:在__construct()中为网格的类属性分配一个引用。

    $this->CI =& get_instance(); 
    
  • 从电网库添加脚本:

    $this->CI->template->add_js('/path/to/grid.js') 
    
  • 在你的HTML模板,叫$this->template->get_js()打印标签

+0

我明白你的观点,但我只想把网格文件夹内的所有东西都放入 - >库本身就是CSS和JS,只需复制并粘贴这个文件夹即可。所以我想我必须采用你的方法。谢谢 :) –

相关问题