2

我将 symfony 1.4 用于某些 Web 应用程序。在那里,当有人尝试访问一个操作时,我将其重定向到一个新操作,如下所示。

//Assume I'm redecting from module1/action1 to module2/action2
$this->redirect('module2/action2');

我在 module2/action2 中可以获得重定向的 url。我用了

$request->getReferer();

但它没有给出任何结果。

我不需要使用 forward 而不是 redirect 因为它不符合我的需要。有人可以帮我解决这个问题。

4

1 回答 1

6

我可以建议您将引用者放在会话中,以便在重定向后能够检索。这就是 sfGuard 的执行方式

在重定向之前:

// save the referer
$referer = $this->getContext()->getActionStack()->getSize() > 1 ? $request->getUri() : $request->getReferer();
$this->getUser()->setAttribute('referer', $referer);

// make your redirect
$this->redirect('module2/action2');

然后,在您的 中module2/action2,像这样检索您的引荐来源网址:

$referer = $this->getUser()->getAttribute('referer');

// finally, remove it from session
$this->getUser()->getAttributeHolder()->remove('referer');
于 2012-08-16T07:32:16.100 回答