FOSRestBundle - 拥有一个既独立又嵌套为另一个资源的资源
FOSRestBundle - Having a single resource both standalone and nested as a child of another
我正在使用 FOSRestBundle 开发 Symfony API。我目前正在处理两个实体;
Client
与 Project
.
有 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)
并且路由应该更新为您期望的。
我正在使用 FOSRestBundle 开发 Symfony API。我目前正在处理两个实体;
Client
与 Project
.
这两个实体都作为独立资源运行良好(请参阅以下 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)
并且路由应该更新为您期望的。