我有一个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.png
,http://<qa-host-name>/<project-name>/my-smilie.png
或http://<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;
}
答案 0 :(得分:6)
尝试public_path('images/smilie.jpg')
功能
答案 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();