2013-02-12 34 views
0

我設置當前URL中的作用,使用$request->getPathInfo()相同的字符串。但是,檢索到的url總是用於prod環境,這意味着我在測試過程中無意中從dev切換到prod環境。

無論如何要確保返回正確的URI(即與瀏覽器窗口中顯示的URI相同)。

我的動作代碼如下所示:

public function executeSomeAction(sfWebRequest $request) 
{ 
    $this->url = $request->getPathInfo(); 
} 

回答

2

正如你可以看到裏面sfWebRequest.class.phpgetPathInfo()除去從URL中$relativeUrlRoot

$pathInfo = $pathArray[$sf_path_info_key]; 
if ($relativeUrlRoot = $this->getRelativeUrlRoot()) 
{ 
    $pathInfo = preg_replace('/^'.str_replace('/', '\\/', $relativeUrlRoot).'\//', '', $pathInfo); 
} 

$relativeUrlRoot從這個函數刪除控制器名稱從網址。

​​

所以,如果你有myapp_dev.php/mainindex.php/main,你總是會得到/main

如果您需要之前的完整路徑/main,您還必須致電$this->request->getScriptName()

小心,getScriptName()將返回一切之間的域和路徑信息。如果您有http://exemple.com/somepath/app_dev.php/main,則getScriptName()將返回:/somepath/app_dev.php

+0

感謝您的解釋! :)。 +1取證工作! – 2013-02-12 14:54:30

1

如果您有任何查詢字符串要完整的URI一起的地址可能有你可以使用

$request->getUri(); 

這將返回整個地址,它是在瀏覽器的地址欄中。