在Zend Framework中,我有一个Action Helper,可以在大多数页面上加载登录表单。这发生在Helper的preDispatch()方法中,我想在表单上设置setAction(),以便它回发到当前的URL。
从Action Helper中访问当前URL /路由的最佳方法是什么?访问请求(通过Action Controller),然后获取getActionName()和getControllerName(),并将它们与baseURL()连接?
有更简单的方法吗? (设置操作需要URI字符串作为参数)。
谢谢!
答案 0 :(得分:5)
你可以像@Elie建议那样做。但是,如果您想使用ZF方法,可以查看:
$request = Zend_Controller_Front::getInstance()->getRequest();
echo $request->getHeader('referer'); // referer's address
echo $request->getRequestUri(); // current address
答案 1 :(得分:2)
我发现我不需要从Action Helper中访问当前的URL /路由。通过将表单操作留空,它会自动发布到当前URL。完美。
答案 2 :(得分:0)
如果我理解正确,当用户登录时,您希望将它们发送回他们来自的页面。我用来做这个的代码是:
// the user has come from a particular page - send them back
if($_SERVER['HTTP_REFERER']) {
$this->_redirect($_SERVER['HTTP_REFERER']);
} else {
// the user has come from the home page, or this page
$this->_redirect('/');
}
位于登录操作中(即LoginController->loginAction()
)。