2010-12-22 20 views
1

我有一個symfony項目,由於DNS問題,本地爲http://<project-name>/,但託管在更多QA級別環境中時需要爲http://<qa-host-name>/<project-name>;/,但生產時可能爲http://<domain-name>/(因此,我需要這兩個工作)。現在,圖片文件夾將永遠是相對<project-name>目錄,所以本地它將http://<project-name>/my-smilie.png和QA這將是http://<qa-host-name>/<project-name>/my-smilie.png獲取相對於索引文件的Symfony URL

因爲任何事物都是相對的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.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

爲什麼不創建每個項目的QA域上的子域名? – lonesomeday 2010-12-22 20:03:50

回答

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();