1

在我的网络应用程序中,如果用户登录并点击徽标,我不会以匿名用户身份进入入口页面,而是加载他们的会员主页 URL。它的工作原理是当用户加入或登录时,我生成此路由$this->generateUrl('member_page'), array('member' => $member->getName())); 并且我的路由配置为这样,

member_page: pattern: /member/{member}/
defaults: { _controller: HomeBundle:Default:member }

它生成这个网址:

http://website.com/member/John+joe/

问题是,当我回忆起路线时,它只显示了这个 url

http://website.com/member/

我曾尝试调用一个新操作并使用$request->getURI(),但它不维护动态获取参数。

我试图避免每次单击徽标时调用数据库以获取用户名。任何帮助都会很棒,谢谢!

4

3 回答 3

4

几周前,我不得不做一些非常相似的事情,并从 PagerFantaBundle 中激发了自己。您是否在控制器中尝试过此代码:

$request = $this->getRequest();
return $this->redirect($this->generateUrl($request->get('_route'), $request->query->all()));
于 2012-07-19T08:09:36.653 回答
2

您可以使用登录后将保存到用户会话中的用户 ID,而不是使用用户名。这也将避免与具有相同名称的用户发生任何冲突。

于 2012-07-19T01:36:57.930 回答
0

一种可能的解决方案是在 Twig 中生成正确的路线:

{% if app.user %}
   <a href="{{ path('member_page', {'member': app.user.name}) }}">
{% else %}
   <a href="{{ path('your_homepage') }}">
{% endif %}
      <img src="yourlogo.png" />
   </a>
于 2012-07-24T12:56:54.607 回答