2016-03-30 10 views
1

Ich arbeite an einer Symfony API mit FOSRestBundle. Ich befasse mich derzeit mit zwei Entitäten;FOSRestBundle - Eine einzelne Ressource sowohl Standalone als auch verschachtelt als Kind eines anderen

Client Welche hat eine Eins-zu-viele-Beziehung zu Project.

Beide Einrichtungen arbeiten gut als Standalone-Ressourcen (siehe folgende debug:router Ausgabe)

Ich habe angefangen bei nesting resources suchen (dh mit Project als Kind Ressource Client und aktualisiert das Routing wie folgt

clients: 
    type: rest 
    resource: bdd.controller.client 

projects: 
    type: rest 
    parent: clients # newly added 
    resource: bdd.controller.project 

Dies funktioniert (zu einem gewissen Grad) aber jetzt ich mit den folgenden Strecken am Ende;

Zugriff /clients/1/project Anrufe ProjectController::getProjectAction() (Versuch, das Projekt mit der ID 1. Ist dies das gewünschte Verhalten, dass Project jetzt abzurufen ist ein Kind Ressource? Und wenn ja, müsste Project erneut als eigenständige Ressource hinzugefügt werden (Duplizieren des projects Routenschlüssels und Entfernen von parent), um ein einzelnes Projekt per ID abzurufen?

Gibt es auch einen Grund, dass die get_client_projects Route singular-ified client?

Vielen Dank!

Antwort

1

Das Routing-Problem, das Sie sehen, ist, weil Ihre get Aktionen in Ihrem ProjectController das Argument des Elternteils fehlen. Aktualisieren Sie die Getter-Methodendefinition auf getProjectsAction($clientId, $id), und die Routen sollten auf das, was Sie erwarten, aktualisiert werden.