2011-03-04 110 views
0

在動作類,我有這樣一個在函數的末尾:如何正確執行URL重定向?

$this->redirect("/myproject_dev.php/login/"); 

在我硬編碼在URL中的開發項目名稱。當然,它在我開發過程中起作用,但當涉及到生產時,我需要刪除它。

那麼,如何在代碼中找到項目名稱(「myproject_dev.php」)?所以我可以這樣做:

$this->redirect($myProjectDevName . "login/"); 

or ..是否有一個聰明的方法來處理這個問題?

謝謝。

------ ADDERATION ---

所以,我使用了建議的public_path。但它只返回根路徑。

我想知道如果有一個功能,當我在開發模式下運行:

http://mydomain.com/myproject_dev.php/whatever 
在其行動類

: $這個 - >重定向(public_path(「登錄」)); 並導致 http://mydomain.com/myproject_dev.php/login

而如果我在生產環境中運行: http://mydomain.com/whatever
動作類是不變的: $這個 - >重定向(public_path( '登錄')); 它會返回這個: http://mydomain.com/login

or ..如何獲取應用程序名稱和symfony環境名稱?

:)

+0

什麼是你的重定向的情況下 - 特別是,爲什麼你需要指定你正在重定向到的應用程序? – yitznewton 2011-03-06 02:45:24

回答

1

您應該使用symfony的路由系統,並從你的routing.yml呼叫路由規則:

$this->redirect('@login'); 

這樣它就變成了與你的環境不同的東西,你不需要改變什麼時候你準備轉移到生產。

+0

我試過了。但@login不起作用。我應該在路由規則中設置什麼? – murvinlai 2011-03-05 02:32:43

+0

http://www.symfony-project.org/jobeet/1_4/Doctrine/en/05 – Tom 2011-03-05 03:14:02

0

試試這個把這個在你的函數

$this->redirect("MODULENAME/ACTION"); 

ex: $this->redirect("pim/admin"); 

這將您重定向到PIM模塊管理行動......