symfony4 - 使用 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
}
解决方案
我是这样解决的
/**
* @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 扩展
推荐阅读
- c++ - 有没有办法将重载的类函数绑定到函数对象?
- javascript - 如何使用隐藏数据创建地图布局?
- python - 如果我有一个空表,请调整变量
- python - 如何检查网址来自哪里?在views.py [Django]
- javascript - 未执行标签 onclick 功能
- vim - Vimgrep:如何使用 find 命令创建 arglist?
- python - 使用 Selenium Python 的新选项卡
- flutter - Flutter中如何设计这种类型的句子?
- visual-studio - 如果 MSVS 局部变量窗口展开“this->base”视图,变量将状态更改为相反
- uwp - 当 MediaTransportContols.IsCompact 为 True 时,UWP MediaPlayerElement 奇怪的播放按钮外观