首页 > 解决方案 > 使用 ParamConverter 合并两条路由

问题描述

我想在 Symfony 5 上将两条路由与 ParamConverters 合并。在根路由上,我想从 Entity 表中获取所有记录。在 id 路线上,我只想获得那个特定的 ID。但是当我访问根路由时,我得到了这个异常:“无法猜测如何从参数“cronjob”的请求信息中获取 Doctrine 实例。”

/**
 * @Route("", methods="GET")
 * @Route("{id}", methods="GET")
 */
public function restGet(Cronjob $cronjob)
{
    ...//logic for getting all or one record
}

标签: symfony4symfony5

解决方案


我是这样解决的

/**
 * @ApiRoute("{id?}", methods="GET")
 */
 public function restGet($id, Cronjobs $cronjob = null)
 {
     return $this->json(isset($id) ? $this->getRepository()->findAll() : $cronjob);
 }

ParamConverter 被隐式​​调用,并且 $cronjob 是否填充。

重要的是 $cronjob 上的 null 和可以为 null 的参数:{id?} 带问号。

我从 AbstractController 扩展


推荐阅读