FOSRestBundle路由 - 添加父选项时出错

时间:2013-06-16 17:16:48

标签: rest symfony routing fosrestbundle

我遇到了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。

为什么我会收到上述错误?

2 个答案:

答案 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)......依此类推,在每个嵌套实体上。

这个适用于我。