проблема css в действии на Zend Framework - PullRequest
0 голосов
/ 17 мая 2011

Не уверен, что я делаю не так, но похоже, что фреймворк может найти style.css только в моих действиях с индексами на каждом контроллере. Я звоню из layout.phtml так:

$this->headLink()->appendStylesheet('css/styles.css');

Поэтому, когда я захожу в project.local / account, я нахожу стили. Если я иду в project.local / account / action, то там нет стилей ... и на самом деле, если я иду в project.local / account / index ... нет стилей. Так что ... это немного странная ошибка, или, по крайней мере, для n00b

Редактировать: Когда я открываю консоль кода в Firefox и пытаюсь следовать css / styles.css, я нахожу следующее сообщение об ошибке:

<code><pre>#0 /home/fiodorovich/library/ZendFramework/library/Zend/Controller/Action.php(515): Zend_Controller_Action->__call('cssAction', Array)
#1/home/fiodorovich/library/ZendFramework/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('cssAction')
#2 /home/fiodorovich/library/ZendFramework/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#3 /home/fiodorovich/library/ZendFramework/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#4 /home/fiodorovich/library/ZendFramework/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#5 /home/fiodorovich/public_html/gisele/public/index.php(26): Zend_Application->run()
#6 {main}  

Параметры запроса:

array (
  'controller' =&gt; 'gisele',
  'action' =&gt; 'css',
  'module' =&gt; 'default',
)  

1 Ответ

2 голосов
/ 17 мая 2011

Параметр, который вы передаете appendStylesheet, просто выводится слепо в ваш HTML, фреймворк на самом деле не ищет этот файл.

Причина, по которой это работает на некоторых страницах, а не на других, заключается в том, что вы дали appendStylesheet относительную ссылку. По сути, когда браузер встречает относительную ссылку, он удаляет текущий URL в последнем слэше, а затем добавляет ссылку.

Итак, в project.local / account браузер ищет CSS в project.local / css / styles.css, но в project.local / account / action браузер ищет CSS в проекте. местный / счет / CSS / styles.css.

Короче говоря, добавьте к вашему параметру начальную косую черту, которая превратит его в относительную корневую ссылку, которая разрешится в одно и то же место на всех страницах:

$this->headLink()->appendStylesheet('/css/styles.css');

Как указал Фил в комментарии, приведенный выше пример работает только до тех пор, пока ваше приложение ZF установлено в корне сайта (как в этом случае). Использование помощника BaseUrl выведет правильный путь независимо от того, где сайт расположен в иерархии сайтов.

$this->headLink()->appendStylesheet($this->baseUrl('css/styles.css'));
...