【发布时间】:2017-05-12 07:37:53
【问题描述】:
我正在使用
/**
* @Route("page/#page")
*/
public function redirectAction()
{
return $this->redirectToRoute('page');
}
但我需要能够放置“#”锚,但我找不到这样做的方法。有什么想法吗?
【问题讨论】:
我正在使用
/**
* @Route("page/#page")
*/
public function redirectAction()
{
return $this->redirectToRoute('page');
}
但我需要能够放置“#”锚,但我找不到这样做的方法。有什么想法吗?
【问题讨论】:
您必须使用新的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 锚点正在呈现。
【讨论】:
您可以使用redirect 代替redirectToRoute
public function yourAction()
{
return $this->redirect(
$this->generateUrl('url_route_name') . '#page',
['param1' => $param1]
);
}
【讨论】:
在控制器中,您无法获取哈希值。 this question 的可能重复项。
相反,您应该将控制器更改为:
/**
* @Route("page/{page}")
*/
public function redirectAction($page)
{
return $this->redirectToRoute($page);
}
您也需要调整请求。
【讨论】: