【问题标题】:Zend_framework - relative paths of imagesZend_framework - 图像的相对路径
【发布时间】:2010-12-16 14:58:05
【问题描述】:

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

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

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

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

戈雷利克。

【问题讨论】:

    标签: php zend-framework relative-path


    【解决方案1】:

    您正在寻找BaseUrl 助手。

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

    【讨论】:

      【解决方案2】:

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

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

      还可以查看this related question 及其答案中的链接。

      【讨论】:

      • 我支持这个解决方案,因为它不会增加调用 baseUrl 帮助程序的开销。
      • 如果他的网站位于子目录中会怎样? http://myhost.com/blah/blah/public/ => http://myhost.com/images/logo.jpg
      • 使用助手是最灵活的解决方案,因为他可以移动他的站点而不必担心破坏路径。 baseUrl 帮助器向前端控制器查询当前的基本 URL。您还可以使用配置值编写自己的基本 URL 帮助程序。 过早的优化等等 :)
      • 公平调用,base 元素也可以做到这一点:)
      【解决方案3】:

      据我了解,此解决方案是 价格过高(每张图片去 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')。

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

      【讨论】:

        【解决方案4】:

        试试这个:

        代码:

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

        HTML:

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

        :)

        【讨论】:

          猜你喜欢
          • 2013-07-25
          • 2011-08-25
          • 2018-11-05
          • 1970-01-01
          • 1970-01-01
          • 2012-01-10
          • 2013-12-18
          • 2011-07-06
          • 2010-11-29
          相关资源
          最近更新 更多