是否可以根据登录用户的 id 修改路由?
例如,假设我有路由“/users/1/comments”来获取用户编号 1 的所有评论,并使用“users/1/settings”获取他们的设置。
如果登录的用户 {id} 为 1,“用户/当前/评论”和“用户/当前/设置”是否可以转到相同的端点?
我想过使用监听器和重定向,但这听起来很可怕。
您可以基于登录用户而不在 url 中指定其 ID,因此您将拥有
/users/comments
重定向到控制器。在该控制器中,您只需获取用户 ID
$this->getUser()->getId()
对于 2 条路线,您可以将它们链接到相同的操作。
事实上,我让它在控制器中执行与编号 {id} 值相同的操作。IE。users/{id}/comments 和 users/current/comments 都去了:
commentsAction($id)
{
if ($id=='current') {
$securityContext = $this->get('security.context');
$currentuser = $securityContext->getToken()->getUser();
$id=$currentuser->getId();
}
// etc...
}