2013-03-30 84 views
1

有沒有辦法讓CakePHP的css方法發出相對於當前文檔的路徑?CSS文件的相對路徑?

即使用此代碼:

$this->Html->css('tutorial'); 

而不是產生

<link rel="stylesheet" type="text/css" href="/Tutorial/css/tutorial.css" /> 

它反而會產生類似

<link rel="stylesheet" type="text/css" href="../../css/tutorial.css" /> 

我知道這是愚蠢的,但我希望創建一些可以使用wget檢索的內容,然後離線觀看。我告訴CakePHP處理.html擴展(使用Router :: parseExtensions('html');),然後設置路由到控制器/動作,看起來像靜態HTML文件的目錄結構。我正在尋找一種方法來生成相對於頁面的URL,這樣當我保存文件(使用wget)時,從硬盤讀取數據時它們仍然可以工作。

正如thaJeztah指出以下,這在CakePHP中是不可能的。由於CakePHP抽象地將URL映射到控制器&動作,它實際上沒有任何'提供文件'的概念(除了/ pages/subdirs等),所以唯一對CakePHP有意義的是提供一個URL從根&開始工作到.CSS文件。 (非常感謝thaJeztah指出這點!)

+0

他們都是相對路徑。 –

+0

css(「../../ tutorial」)是否工作? –

+0

呵呵。顯然,以「/」開頭的網址是相對的。我正在考慮「相對於當前文檔」 – MikeTheTall

回答

2

API

如果$路徑以「/」前綴,路徑將是相對於應用程序的根目錄。否則,路徑將是相對於你的CSS路徑

所以,你可以開始從那裏/,然後點的路徑,這樣你就不需要走回頭路在目錄中。

感謝this answer指出這一點

+0

我正在尋找相對於文檔的路徑(而不是相對於webroot文件夾或CSS路徑) – MikeTheTall

+0

我明白,但我的想法是,你可以只是輸入相對於webroot的路徑,而不必從CSS文件夾返回目錄 –

+0

我知道這是愚蠢的,但我期望創建一些可以使用wget檢索的內容,然後離線觀看。所以它需要與文檔相關。 – MikeTheTall

0

作爲一個側面說明,其實你可以得到使用「wget的」命令一個網站的副本。 (甚至還有一個適用於Windows的「Visual WGet」,它爲所有的命令行選項提供了一個友好的GUI)。 wget將下載所有文件,並且(如果您使用-k/--convert-links選項)將修正所有鏈接(相對於每個文檔)以使其脫機工作。

這是對等待重要直到wget的完全結束,作爲wget的做這種怪異的兩階段的事情在第一次得到所有的文件,然後返回並修復了鏈接