2016-03-30 7 views
1

Я работаю над Symfony API, используя FOSRestBundle. В настоящее время я занимаюсь двумя объектами;FOSRestBundle - наличие единственного ресурса как автономного, так и вложенного как дочерний элемент другого

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() (попытка восстановить проект с идентификатором 1. Является ли это предполагаемое поведение теперь, что Project является ребенок ресурс? И если да, то нужно было бы добавить Project в качестве автономного ресурса (дублируя ключ маршрута projects и удаляя parent), чтобы получить один проект по ID?

Кроме того, есть ли причина, по которой маршрут get_client_projects имеет особые значения client?

Спасибо!

ответ

1

Проблема с маршрутизацией, которую вы видите, связана с тем, что в действиях get в вашем ProjectController отсутствует аргумент родителя. Обновите определение метода getter getProjectsAction($clientId, $id), и маршруты должны обновиться до ожидаемого.