Zend_framework - относительные пути изображений - PullRequest
1 голос
/ 14 ноября 2009

Когда я разрабатываю веб-приложение на Zend_framework (php), я должен включать изображения (файлы css, файлы js и т. Д.).

Решением для включения было указание абсолютных путей каждый раз, когда мне требовалось изображение (я сохранял в параметре «global like» с моим хостом и объединял его с относительным путем изображения на хосте). Как я понимаю, это решение переоценено (для каждого изображения, чтобы перейти на службу DNS и т. Д.), И я ищу более простое решение проблемы относительного пути.

P.S. Проблема может быть лучше описана в следующем примере: когда я собираюсь "http://myhost.com/", изображения будут отображаться нормально (путь к изображению был:" ./images/logo.jpg "). Но он победил" из «http://myhost.com/users/" url» (чтобы его было видно, мне пришлось изменить путь к изображению на: «./../images/logo.jpg".

Если бы кто-нибудь знал, как я могу решить эту проблему, я буду рад услышать.

Горелик.

Ответы [ 4 ]

8 голосов
/ 14 ноября 2009

Вам нужен помощник BaseUrl .

<?php echo $this->baseUrl('images/logo.jpg'); ?>
2 голосов
/ 14 ноября 2009

Вы должны использовать относительные пути сайта-корня вместо относительных путей.

Просто удалите эту точку в пути к изображению: ./images/logo.jpg должно быть /images/logo.jpg. Начальная точка делает его путем относительно текущего URL (поэтому его нужно менять в зависимости от того, где вы находитесь на сайте). Без точки это путь относительно корня, поэтому он работает везде без необходимости его изменения.

Также взгляните на этот связанный вопрос и ссылки в его ответах.

1 голос
/ 15 ноября 2009

Как я понимаю, это решение с завышенной ценой (для каждой картины, чтобы перейти Служба DNS и тд) и я в поисках более простого решения проблема относительного пути.

Я не верю, что это правда.

Даже если бы вы использовали полные абсолютные URL-адреса, включая имя хоста, вам не пришлось бы искать DNS для каждого изображения. Будьте уверены, что клиентская ОС (и в некоторых случаях, я думаю, браузер) кеширует эту информацию для вас.

Конечно, нет причин использовать полные URL-адреса. Просто перейдите к абсолюту из корня сервера:

<?PHP
// somewhere in config.php or similar:
define('SITE_ROOT_URL_PATH','/myapplication');
...
// meanwhile, in some template
<img src="<?php echo SITE_ROOT_URL_PATH . '/images/foo.jpg'; ?>" />

Если ваше приложение работает в корневом веб-каталоге, просто установите для DITE_ROOT_URL_PATH значение ''

Вы даже можете создать небольшую вспомогательную функцию, чтобы сэкономить некоторые нажатия клавиш: imgurl ('foo.jpg').

Я использовал этот метод годами, и у меня никогда не было головной боли. Если я не упустил что-то в вопросе, это путь.

0 голосов
/ 24 января 2017

Попробуйте:

Код:

$imgurl=$this->layout()->staticBaseUrl.'application/themes/themes-files/images/filename.jpg';

Html

<img src="<?php echo $imgurl; ?> " width="50" height="50"/>

:)

...