使用Symfony重定向功能时锚定路由URL

时间:2016-12-28 03:22:54

标签: php symfony

我正在使用

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用redirect代替redirectToRoute

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

答案 1 :(得分:1)

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

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

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

您也需要调整请求。

答案 2 :(得分:0)

您必须使用新的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锚点。