Zend Framework - 图像的相对路径

时间:2009-11-14 16:26:55

标签: php zend-framework relative-path

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

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

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

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

戈列利克。

4 个答案:

答案 0 :(得分:8)

您正在寻找BaseUrl帮助者。

<?php echo $this->baseUrl('images/logo.jpg'); ?>

答案 1 :(得分:2)

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

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

另请查看this related question及其答案中的链接。

答案 2 :(得分:1)

  

据我所知,这个解决方案是   价格过高(每张照片都要去   DNS服务等等)和我一样   寻找一个更简单的解决方案   相对路径问题。

我不相信这是真的。

即使您使用完整的绝对URL(包括主机名),也不会在每个图像上进行DNS查找。请放心,客户端操作系统(在某些情况下,我认为是浏览器)正在为您缓存这些内容。

当然,没有理由使用完全限定的网址。从服务器根目录开始绝对:

<?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')。

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

答案 3 :(得分:0)

试试这个:

代码:

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

HTML:

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

:)