2011-05-13 53 views
0

我的所有樣式都位於應用程序佈局文件夾下的根後面。我不想將我的styleS保留在公共文件夾中。如何從zend應用程序的佈局文件夾動態添加樣式

如何在我的佈局中使用以下命令動態讀取它們?

$styleFile = "greenish.css"; // from database 
$this->headLink()->appendStylesheet(APPLICATION_PATH . 'modules/frontManagement/layouts/styles/'.$styleFile); 

任何想法?

回答

0

如果你想避免內嵌樣式,並且只使用headlink()但交付是藏安全地離開了網站根目錄外或在DB的內容,那麼它聽起來像是你將必須將headLink()轉換爲一個動態的服務器端腳本,該腳本接受客戶標識符,然後交付該客戶特定的CSS,並帶有MIME類型標題。

用聰明的緩存頭和URL命名,你甚至可以得到這個高速緩存在瀏覽器端,就像你用靜態的,完全公開CSS資源得到。

但我要告訴你,這一切聽起來有點小題大做了我。只要您只向客戶'XXX'提供stylesheet_XXX.css,誰會關心所有其他款式是否「可以使用」?不過,如果這是你的要求,那麼我認爲你可以用上面的方法來管理它。

0

爲什麼你不想讓你的樣式/腳本保存在公共文件夾中?這就是你應該保留它們的地方,因爲,因爲他們的公共資源。

即使你不停地在別的地方,你還是要讀它和樣式應用到您的網頁。這意味着你實際上不能隱藏它(如果這是你的意圖)

+0

我喜歡「爲什麼」這個詞:)我有數百個設計與數百個網站centerlize從一個zend應用程序。我不想讓每個客戶都能訪問所有樣式。只有這種風格會加載到分配給他的網站上。所以我想簡單地讀取css文件並將其加載到視圖中。任何可能性? – Developer 2011-05-13 13:06:21

+0

我猜你可以阻止熱鏈接。但是這不會阻止任何人直接嵌入頁面。你可以嘗試使CSS成爲一個PHP文件並對其進行一些檢查。 – JohnP 2011-05-13 14:01:24

0

我認爲你想要HeadStyle視圖助手,其中包括樣式表內嵌在文檔頭。基本用法是這樣的:

$styleFile = "greenish.css"; // from database 
$style = file_get_contents(APPLICATION_PATH . 'modules/frontManagement/layouts/styles/'.$styleFile); 
$this->headStyle()->appendStyle($style); 
+0

Infact我不想使用headStyle添加樣式。我想要做這個headLink。想要避免內聯樣式 – Developer 2011-05-13 16:53:31

+0

如果你想樣式錶鏈接但非公開,那麼我唯一的建議是設置一個StyleController,它只提供當前用戶可以訪問的樣式。它將在你的服務器上負載更多,並且你必須自己處理所有與緩存相關的頭文件,以便正確製作樣式表緩存。 – squirrel 2011-05-16 13:15:44

相關問題