【问题标题】:Anchor in routing URL when using Symfony redirect function使用 Symfony 重定向功能时在路由 URL 中锚定
【发布时间】:2017-05-12 07:37:53
【问题描述】:

我正在使用

/**
 * @Route("page/#page")
 */
public function redirectAction()
{
    return $this->redirectToRoute('page');
}

但我需要能够放置“#”锚,但我找不到这样做的方法。有什么想法吗?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    您必须使用新的Routing Improvements added in Symfony 3.2。我看到你有一个 symfony2 标签,它也应该在最新版本的 Symfony2 中。

    您无法向路由注释添加锚点,但您需要进行以下更改:

    /**
     * @Route("page")
     *
     */
    public function redirectAction()
    {
       return $this->redirectToRoute(
          $this->get('router')->generate('page', [
             '_fragment' => 'page'
          ])
       );
    }
    

    这假定您的页面中有一个 #page 锚点正在呈现。

    【讨论】:

    • 感谢您的回答,但我需要知道用户何时进入此路线,例如:example.com/#helloWorld,所以我可以重定向到另一个页面,而不仅仅是添加“ #" 到路线的尽头,我使用的是 sf 2.8 btw。
    【解决方案2】:

    您可以使用redirect 代替redirectToRoute

    public function yourAction()
    {
        return $this->redirect(
             $this->generateUrl('url_route_name') . '#page',
             ['param1' => $param1]
         );
    }
    

    【讨论】:

    • 感谢您的回答,但我需要知道用户何时进入此路线,例如:example.com/#helloWorld,这样我就可以重定向到另一个页面,而不仅仅是添加“#”到路线的尽头
    【解决方案3】:

    在控制器中,您无法获取哈希值。 this question 的可能重复项。

    相反,您应该将控制器更改为:

    /**
     * @Route("page/{page}")
     */
    public function redirectAction($page)
    {
        return $this->redirectToRoute($page);
    }
    

    您也需要调整请求。

    【讨论】:

      猜你喜欢
      • 2011-08-07
      • 2020-05-09
      • 2017-06-02
      • 2023-02-03
      • 2017-10-12
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多