2

在 CakePHP 中,如果我将 href 链接作为 href="/css/main.css" 提供,则它不是指 webroot 中的 css 文件夹。只有当我提到 href="http://localhost/cake/app/webroot/css/main.css" 时才会应用 css。

<link type="text/css" rel="Stylesheet" href="/css/main.css" media="screen,projection" />

这不适用于指定的 css。

这是什么原因?为什么代码无法识别正确的文件夹?

4

6 回答 6

5

因为它以 / 开头,所以它被视为绝对路径(从站点的根目录开始)。浏览器将其翻译为

http://localhost/css/main.css

您可以指定正确的绝对路径

/cake/app/webroot/css/main.css

或完整路径

http://localhost/cake/app/webroot/css/main.css

或相对路径,例如

../css/main.css
于 2009-07-20T05:35:03.393 回答
3
echo $html->css('main');

API

于 2009-07-20T07:41:41.750 回答
1

你为什么不使用核心助手?它将生成 CSS 文件所需的路径插入格式正确的元素

并检查主配置文件(/app/config/core.php),也许你没有使用 mod_rewrite。检查 core.php 是否评论了这一行 Configure::write('App.baseUrl', env('SCRIPT_NAME'));

于 2009-07-20T06:02:26.367 回答
0

像这样定义 BASEURL 的函数只允许您在一个地方更新.. 我使用类似...


define("DEVELOPMENT", true);

function setReporting() { if (DEVELOPMENT) { define("BASEURL", "http://localhost/localDir", true); error_reporting(E_ALL); } else { define("BASEURL", 'http://' . $_SERVER['SERVER_NAME'], true); error_reporting(0); } } setReporting();

于 2009-07-20T05:24:14.260 回答
0

如果您的绝对 URL 看起来像

http://localhost/cake/app/webroot/css/main.css

你的网址是

/css/main.css

我想浏览器会翻译你给的 URL

http://localhost/css/main.css

(您可以使用Firebug进行检查,例如“net”选项卡)

如果是这种情况,您应该:

  • 使用没有前导 / 的相对 URL
  • 使用引用根 URL 的绝对 URL

但是,在我看来,使用以 ' ' 开头的 URLhttp://是确保您的 CSS 包含始终正常的最佳方法,无论您进入哪个目录或 URL...

于 2009-07-20T05:00:37.927 回答
0

当你部署 cake 时,url 应该只是 /css/main.css,因为服务器的 DocumentRoot 将指向 cake/app/webroot 目录。

我建议从 Cake 的在线文档中阅读这篇文章以获取更多信息。请注意,本文指的是 Cake 的 1.1 版本,但也应适用于 1.2。

祝你好运!

于 2009-07-20T05:59:18.667 回答