1

当我在 Zend_framework (php) 上开发 Web 应用程序时,我必须包含图像(css 文件、js 文件等)。

包含的解决方案是每次我需要图像时指定绝对路径(我将主机存储在“global like”参数中,并将其与主机上图像的相对路径连接起来)。据我了解,该解决方案价格过高(对于每张图片都使用 DNS 服务等),我正在寻找一种更简单的解决方案来解决相对路径问题。

PS 这个问题可以用下面的例子更好地描述:当我去“ http://myhost.com/ ”时,图像会正常显示(图像路径是:“./images/logo.jpg”)。但它不会从“ http://myhost.com/users/ ”网址中看到(为了让它看到我必须将图像路径更改为:“./../images/logo.jpg”。

如果有人知道我如何解决这个问题,我会很高兴听到。

戈雷利克。

4

4 回答 4

8

您正在寻找BaseUrl助手。

<?php echo $this->baseUrl('images/logo.jpg'); ?>
于 2009-11-14T16:29:47.107 回答
2

您应该使用站点根目录相对路径而不是相对路径。

只需删除图像路径中的那个点:./images/logo.jpg应该是/images/logo.jpg. 前导点使其成为相对于当前 URL 的路径(因此需要根据您在站点上的位置进行更改)。没有点,它是相对于根的路径,因此它可以在任何地方工作,无需更改它。

另请查看此相关问题及其答案中的链接。

于 2009-11-14T16:50:41.433 回答
1

据我了解,该解决方案价格过高(对于每张图片都使用 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'; ?>" />

如果您的应用程序在 Web 根目录中运行,只需将 DITE_ROOT_URL_PATH 设置为 ''

你甚至可以创建一个小辅助函数来节省一些击键:imgurl('foo.jpg')。

我用这种方法很多年了,从来没有头疼过。除非我在问题中遗漏了一些东西,否则这是要走的路。

于 2009-11-15T04:12:08.343 回答
0

试试这个:

代码:

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

html:

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

:)

于 2017-01-24T10:12:15.213 回答