有没有办法让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指出这一点!)
答案 0 :(得分:2)
来自API
如果$ path以“/”为前缀,则路径将相对于应用程序的webroot。否则,路径将相对于您的CSS路径
因此,您可以使用/
启动路径,然后从那里指向,这样您就不需要在目录中向后移动。
归功于this answer指出这一点
答案 1 :(得分:0)
作为旁注,您实际上可以使用“wget”命令获取网站的副本。 (对于Windows来说,甚至还有一个很好的“Visual WGet”,它为所有命令行选项提供了一个友好的GUI)。 wget将下载所有文件,并且(如果使用-k / --convert-links选项)将修复所有链接(相对于每个文档),以便它们脱机工作。
重要的是等到wget完全结束,因为wget执行这个奇怪的两阶段事情,它首先获取所有文件,然后返回并修复链接