2012-01-13 30 views
6

美好的一天,我在用Smarty學習CodeIgniter。我的CSS文件存儲在CodeIgniter + CSS

/App01/application/views/css/main.css 

要鏈接我的CSS我用:

<link rel="stylesheet" type="text/css" href="http://localhost:88/APP1/application/views/css/layout.css" media="screen" /> 

但是CSS不適用我的網頁上。當我打開CSS URL時,我收到一條消息:

Forbidden 
You don't have permission to access /APP1/application/views/css/layout.css on this server. 

請問我在做什麼錯?我想將我的CSS與視圖保持在一起,因爲將來我想學習如何創建多個主題,而我應該將CSS保存在主題文件夾中。

我能代替URL路徑與一些Smarty的變量CSS文件,這樣當我移動我的應用程序並不需要手動更改模板CSS URL路徑?

預先感謝您! Vojtech

+3

+1用於啓動一個線程與美好的一天。 – SpaceBeers 2012-01-13 09:54:06

回答

12

任何CI中的/application文件夾應該被視爲出界外。爲了獲得最佳的安全性,實際上應該考慮的結構保持/application你上面的wwwpublic_html文件夾,如本:

– application 
    – controllers 
    – models 
    – views 
    – ... 
– system 
    – core 
    – libraries 
    – ... 
– public_html 
    – index.php 

這使得你的應用程序代碼更安全。

我會建議在公共文件夾中創建您的客戶端腳本和CSS。例如public_html/csspublic_html/js。或者,如果您想沿着主題路線走,可能會將每個CSS文件命名爲主題名稱,因此您需要css/theme1.csscss/theme2.css

如果您的網站將始終從域的根目錄的工作,那麼你可以使用:

<link rel="stylesheet" type="text/css" href="/css/layout.css" media="screen" /> 

但是,如果你覺得你會到處移動各種各樣的東西,然後再考慮在發送給Smarty之前,準備好您的控制器中的文件位置。

$this->load->helper('url'); 
$this->smarty->assign('css_file', base_url("css/theme1.css")); 

,將返回:

http://localhost/app1/css/theme.css 

或任何你笨的網址是。

+0

許多感謝您的建議托馬斯,它幫助我瞭解了很多! – Vojtech 2012-01-19 08:41:58

+0

不客氣。 – 2012-01-19 08:54:54

0

嘗試增加一個符號鏈接到您的服務器的文檔根目錄文件夾。 (www/public_html/htdocs)

cd (document root folder) 
ln -s (/App01/application/views/css) . 

這樣你就可以訪問你的css文件夾並保持當前結構。

1

這將有助於CSS鏈接到笨。

link_tag用於鏈接的資源,你可以使用helper功能。 例如html helper,url helper,email helper等

在你的控制器,你必須創建一個功能類似於

<?php 
class Home extends CI_Controller{ 
    public function helper(){ 
     $this->load->helper('html');  
     $this->load->view('index'); 
    } 
} 
?> 

和你index.phpview文件夾使用link_tag關鍵字。

<html> 
<head> 
<title></title> 
<?php echo link_tag('App01/application/views/css/main.css');?> 
</head> 
<body> 
    <?php 
    ....... 
    ?> 
</body> 
</html>