我正在尝试将路由器转换为用户名。不幸的是,paramconverter总是搜索id。
我已经尝试了几种设置,我目前的设置如下:
/*
* @ParamConverter("username", class="StregoUserBundle:User")
* @Rest\View(serializerEnableMaxDepthChecks=true, serializerGroups={"Default","user"})
* @param User $user username
*/
public function getUserAction(User $username){
$return = array('user' => $user);
return $return;
}
路由本身由FOSRestBundle自动定义,如下所示:
get_user获取任何内容 / API /用户/ {用户名}。{_格式}
如果通过用户名找到用户,我该怎么做?
答案 0 :(得分:3)
来自Symfony文档:
/*
* @ParamConverter("username", class="StregoUserBundle:User", options={"id" = "username"})
* @Rest\View(serializerEnableMaxDepthChecks=true, serializerGroups={"Default","user"})
* @param User $user username
*/
public function getUserAction(User $username){
$return = array('user' => $user);
return $return;
}
将id设置为您的参数名称,并且您已全部设置。
答案 1 :(得分:0)
Symfony documentation for ParamConverter提到映射哈希选项作为使用多个字段进行匹配的方法。但是,它们提供的注释示例使用单个字段,这是您想要的。
如果要匹配使用多个字段的实体,请使用映射哈希选项:键是路径占位符名称,值是Doctrine字段名称:
/**
* @Route("/blog/{date}/{slug}/comments/{comment_slug}")
* @ParamConverter("post", options={"mapping": {"date": "date", "slug": "slug"}})
* @ParamConverter("comment", options={"mapping": {"comment_slug": "slug"}})
*/
public function showAction(Post $post, Comment $comment)
{
}