我遇到了FOSRestBundle的问题。
我正在尝试在路由中使用父选项,我收到以下错误
[InvalidArgumentException] 每个父控制器必须具有
get{SINGULAR}Action($id)
方法 其中{SINGULAR}是一种单一形式的关联对象
这是我的routing.yml
organisation :
type: rest
resource: MyProject\RestBundle\Controller\OrganisationRestController
name_prefix: api_
users :
type: rest
resource: MyProject\RestBundle\Controller\UsersRestController
name_prefix: api_
parent: organisation
我在控制器中实现了ClassRessourceInterface。
为什么我会收到上述错误?
答案 0 :(得分:0)
您正在尝试在此处实施Resource Collection。
正如文件所说:
在这种情况下,您的UsersController必须始终只有一个资源get ... action
class UsersController extends Controller
{
public function getUserAction($slug)
{} // "get_user" [GET] /users/{slug}
...
}
但是,与示例的区别在于您的组织是父组织而不是用户。
您的MyProject \ RestBundle \ Controller \ IrganizationsRestController必须提供类似 getOrganizationsRestAction()的内容。 OrganisationsRest ...是你的父母。
我不确定FOSRestBundle在尝试访问单一形式的UsersRest时期望的名称...
由于您的控制器名称未提供任何带有“Rest”后缀的额外信息,因为您的软件包已经命名为 Rest Bundle ...您可以考虑将控制器名称更改为:
OrganisationsController
UsersController
并将getOrganisationAction()
方法添加到OrganisationsController中,如示例所示。
答案 1 :(得分:0)
也许您忘记在嵌套实体中添加此get {SINGULAR} Action($ id)中的嵌套ID参数:
class SubEntityController {
...
getSubEntityAction($subId, $id) {
...
}
}
... getSubSub ....($ subSubId,$ subId,$ id)......依此类推,在每个嵌套实体上。
这个适用于我。