获取相对于索引文件的Symfony URL

时间:2010-12-22 19:59:30

标签: symfony1

我有一个symfony项目,由于DNS问题,本地http://<project-name>/,但在更多QA级环境中托管时需要http://<qa-host-name>/<project-name>;/,但它可能是http://<domain-name>/用于生产(所以,我需要这两个工作)。现在,images文件夹始终是相对于<project-name>目录的,因此在本地它将是http://<project-name>/my-smilie.png,在QA上它将是http://<qa-host-name>/<project-name>/my-smilie.png

由于所有内容都与index.php的URL相关,我认为Symfony可以创建动态URL,即使上下文不同也可以工作,这样我的template.php就可以像

<?php echo image_url("my-smilie.png"); 
      /*see below for potential implementation*/?>

并输出http://<project-name>/my-smilie.pnghttp://<qa-host-name>/<project-name>/my-smilie.pnghttp://<domain-name>/my-smilie.png。 (相对URL很好,但绝对会更好)。

下面是我正在寻找的一个例子,但我觉得我正在尝试重新发明轮子,并且Symfony已经完成了这个。

function image_url($img)
{
    return get_base_url() . '/images/' . $img;
}


function get_base_url()
{
    $par = dirname( $_SERVER[ 'SCRIPT_NAME' ] );
    if($par == "/") $par = "";
    return $par;
}

2 个答案:

答案 0 :(得分:6)

尝试public_path('images/smilie.jpg')功能

public_path() manual

答案 1 :(得分:3)

我刚遇到public_path助手不能很好地运作的情况,但还有另一种选择:

    // this populates $host with absolue URL of the parent directory 
    // of the Symfony script
    $host = $request->isSecure()? 'http://':'https://';
    $host .= $request->getHost() . $request->getRelativeUrlRoot();