HREF ссылки в CakePHP - PullRequest
       22

HREF ссылки в CakePHP

2 голосов
/ 20 июля 2009

В CakePHP, если я даю ссылки на href как href = "/ css / main.css", это не относится к папке css в webroot. Только когда я упоминаю href = "http://localhost/cake/app/webroot/css/main.css", CSS применяется.

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

Это не относится к указанному CSS.

В чем причина этого? Почему код не идентифицирует правильную папку?

Ответы [ 6 ]

5 голосов
/ 20 июля 2009

Поскольку он начинается с /, он рассматривается как абсолютный путь (от корня сайта). Браузер переводит это как

http://localhost/css/main.css

Вы можете указать правильный абсолютный путь

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

или полный путь

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

или относительный путь, например

../css/main.css
3 голосов
/ 20 июля 2009
echo $html->css('main');

BOOK

API

1 голос
/ 20 июля 2009

Почему вы не используете core helper? Будет сгенерирован необходимый путь к файлу CSS Вставка хорошо отформатированных элементов

И проверьте основной файл конфигурации (/app/config/core.php), возможно, вы не используете mod_rewrite. Проверьте core.php для прокомментированных этой строки Configure :: write ('App.baseUrl', env ('SCRIPT_NAME'));

0 голосов
/ 20 июля 2009

Когда вы развертываете торт, URL должен быть просто /css/main.css, так как DocumentRoot сервера будет указывать на каталог cake / app / webroot.

Предлагаю прочитать эту статью из онлайн-документации Cake для получения дополнительной информации. Обратите внимание, что эта статья относится к версии 1.1 Cake, но также должна работать и в версии 1.2.

Удачи!

0 голосов
/ 20 июля 2009

Функция, подобная этой, для определения BASEURL, позволяет обновлять только в одном месте. Я использую что-то вроде ...

<code>
define("DEVELOPMENT", true);</p>

<p>function setReporting() 
{
if (DEVELOPMENT) 
    {
            define("BASEURL", "<a href="http://localhost/localDir" rel="nofollow noreferrer">http://localhost/localDir</a>", true);
            error_reporting(E_ALL);
    }
    else 
    {
            define("BASEURL", 'http://' . $_SERVER['SERVER_NAME'], true);
            error_reporting(0);
    }
}
setReporting();
0 голосов
/ 20 июля 2009

Если ваш абсолютный URL выглядит как

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

и ваш URL-адрес

/css/main.css

Полагаю, браузер переводит URL, который вы дали

http://localhost/css/main.css

(вы можете проверить это с помощью Firebug , например, вкладка "net")

Если это так, вы должны:

  • использовать относительный URL без начального /
  • использовать абсолютный URL, который ссылается на корневой URL

Но, на мой взгляд, использование URL-адреса, начинающегося с 'http://', - лучший способ убедиться, что ваше CSS-включение всегда в порядке, независимо от того, в какую директорию или URL вы заходите ...

...