2011-03-04 80 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模块管理行动......