FOSRestBundle - 拥有一个既独立又嵌套为另一个资源的资源

FOSRestBundle - Having a single resource both standalone and nested as a child of another

我正在使用 FOSRestBundle 开发 Symfony API。我目前正在处理两个实体;

ClientProject.

有 one-to-many 关系

这两个实体都作为独立资源运行良好(请参阅以下 debug:router 输出)

我已经开始查看 nesting resources(即将 Project 作为 Client 的子资源,并按如下方式更新了路由;

clients:
  type: rest
  resource: bdd.controller.client

projects:
  type: rest
  parent: clients # newly added
  resource: bdd.controller.project

这(在一定程度上)可行,但我现在最终采用以下路线;

访问 /clients/1/project 调用 ProjectController::getProjectAction()(尝试检索 ID 为 1 的项目。现在 Project 是子资源,这是预期的行为吗?如果是, Project 是否需要再次添加为独立资源(复制 projects 路由键并删除 parent)以通过 ID 检索单个项目?

此外,get_client_projects 路线有 singular-ified client 的原因吗?

谢谢!

您看到的路由问题是因为您在 ProjectController 中的 get 操作缺少父参数。将 getter 的方法定义更新为 getProjectsAction($clientId, $id) 并且路由应该更新为您期望的。