CSS文件的相对路径?

时间:2013-03-30 22:13:52

标签: cakephp

有没有办法让CakePHP的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映射到控制器&amp;动作它实际上没有任何“服务文件”的概念(除了/ pages / subdirs等),所以对CakePHP唯一有意义的是提供一个从根目录开始的URL。适用于.CSS文件。 (非常感谢thaJeztah指出这一点!)

2 个答案:

答案 0 :(得分:2)

来自API

  

如果$ path以“/”为前缀,则路径将相对于应用程序的webroot。否则,路径将相对于您的CSS路径

因此,您可以使用/启动路径,然后从那里指向,这样您就不需要在目录中向后移动。

归功于this answer指出这一点

答案 1 :(得分:0)

作为旁注,您实际上可以使用“wget”命令获取网站的副本。 (对于Windows来说,甚至还有一个很好的“Visual WGet”,它为所有命令行选项提供了一个友好的GUI)。 wget将下载所有文件,并且(如果使用-k / --convert-links选项)将修复所有链接(相对于每个文档),以便它们脱机工作。

重要的是等到wget完全结束,因为wget执行这个奇怪的两阶段事情,它首先获取所有文件,然后返回并修复链接