使用 ParamConverter 合并两条路线

Merge two routes with ParamConverter

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

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

我是这样解决的

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

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

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

我从 AbstractController 扩展