2011-11-20 24 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,只需複製並粘貼這個文件夾即可。所以我想我必須採用你的方法。謝謝 :) –

相關問題