Zend Framework, Проблемы с путями

Я делаю свое первое приложение zend, следуя официальному руководству пользователя, я установил стандартное приложение zend (с zend studio 9 и ZF 1.11) и хочу добавить изображения и таблицы стилей CSS на свои страницы .phtml. Когда я помещаю файлы css в «myApplicationName / public / css», все работает нормально, но когда я пытаюсь поместить их в другой каталог, например «myApplicationName / application / layouts / css», они не учитываются, что за пути, которые я должен использовать, чтобы связать их с phtml-страницами?

Я пробовал относительные пути, например:

<link rel="stylesheet" type="text/css" media="screen" href="../../css/layout_look_like.css" />

а также :

<link rel="stylesheet" type="text/css" media="screen" href="/application/layouts/css/layout_look_like.css" />

но похоже, что это не работает,

Я также пробовал пути с $ this-> baseUrl (), но <?php echo $this->baseUrl();?> ничего не возвращает.

Спасибо за помощь.


person Believer    schedule 20.03.2012    source источник


Ответы (2)


Ваши файлы CSS должны находиться в каталоге public. Нет необходимости размещать их в вашем application каталоге. Если вам действительно нужно это сделать, вы можете создать символическую ссылку на каталог public.

Чтобы включить файл CSS (хранящийся в каталоге public) в ваше представление / макет, используйте:

<?php echo $this->headLink()->appendStylesheet($this->baseUrl('/styles/basic.css')); ?>
person Config    schedule 20.03.2012
comment
Вы должны использовать $this->baseUrl('/styles/basic.css') вместо просто пути. В противном случае вы можете столкнуться с проблемами, когда ваше приложение запускается из подкаталога, а ваш baseUrl, следовательно, не / - person dbrumann; 20.03.2012
comment
@mahok Спасибо, что указали, вы правы. Я отредактировал ответ. - person Config; 20.03.2012
comment
Хорошо, спасибо за ответ, я планировал поместить макет и его CSS в один каталог. - person Believer; 20.03.2012
comment
Но какова структура каталогов для файлов .css и .js? Какой из них правильный, если я использую модули с ZF: Module/views/scripts/js и Module/views/scripts/css? Или Module/views/js и Module/views/css? Или Module/views/scripts/controllerName/css и Module/views/scripts/controllerName/js? Спасибо. - person Green; 16.10.2012

CSS, изображения и JS, а также любые другие общедоступные статические ресурсы должны находиться в папке public, поскольку это ваш веб-сервер DOCUMENT_ROOT (т. Е. http://yourdomain/). Кроме того, вы можете использовать любую структуру, которая вам нравится.

person prodigitalson    schedule 20.03.2012
comment
Но что, если я использую структуру модуля, где мне нужно хранить файлы css и js? Каждый модуль представляет собой одну отдельную страницу. И на каждой странице есть свои стили и js скрипты. Нужно ли мне вообще помещать эти файлы в каталог / public? Или я должен сделать это Module/views/scripts/css или это Module/views/scripts/controllerName/js? А какие именно css и js должны храниться в /public? Файлы, принадлежащие layout.phtml? Но не лучше ли хранить css и js макета в /layout/script/css и /layoutscript/js? - person Green; 16.10.2012
comment
/public - единственное, что должно быть доступно через URL-адрес, чтобы вы могли передавать css / js прямо из структуры вашего модуля. Если вы действительно хотите хранить их здесь, я полагаю, вы могли бы использовать символические ссылки, Symfony 1.x делает что-то подобное в своей инфраструктуре плагинов. - person prodigitalson; 16.10.2012