2013-06-16 2 views
0

У меня проблема с 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 в моих контроллерах.

Почему я получаю вышеуказанную ошибку?

ответ

0

Вы пытаетесь реализовать здесь Resource Collection.

Как говорится в документации:

В этом случае ваш UsersController должен всегда иметь единственный ресурс получить ... Действие

class UsersController extends Controller 
{ 
    public function getUserAction($slug) 
    {} // "get_user" [GET] /users/{slug} 

    ... 
} 

Но разница к примеру, что ваша организация является родитель и НЕ пользователь.

ваш MyProject \ RestBundle \ Controller \ IrganizationsRestController должен предоставить что-то вроде getOrganizationsRestAction(). OrganisationsRest ... является вашим родителем.

Я не уверен, что имя FOSRestBundle ожидает при попытке получить доступ к особой форме UsersRest ...

Как ваши имена контроллеров не предоставляют каких-либо дополнительную информацию, будучи с суффиксом «Отдых», потому что ваш пакет уже названный Rest Bundle ... вы могли бы рассмотреть вопрос об изменении названия контроллера к:

OrganisationsController 
UsersController 

и добавить метод getOrganisationAction() к OrganisationsController, как в примере.

0

Может быть, вы забываете добавить в вложен Сущности, вложенный параметр ID в этом получить {} SINGULAR действий ($ ID):

class SubEntityController { 
    ... 
    getSubEntityAction($subId, $id) { 
     ... 
    } 
} 

... getSubSub .... ($ subSubId, $ subId, $ id) ... и так далее, на каждом вложенном объекте.

Этот работает для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^