1

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

4

2 回答 2

2

API

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

所以你可以用 a 开始路径,/然后从那里指向,这样你就不需要在目录中倒退。

感谢这个答案指出这一点

于 2013-03-30T22:25:43.290 回答
0

As a side-note, you can actually get a copy of a website using the "wget" command. (There's even a nice "Visual WGet" for Windows, which presents a friendly GUI for all the command line options). wget will download all the files and (if you use the -k / --convert-links option) will fix up all the links to be relative (to each document) so that they work offline.

It's important to wait till wget completely finishes, as wget does this weird two-phase thing where it FIRST gets all the files and THEN goes back and fixes up the links

于 2013-04-03T23:11:13.840 回答