2017-03-29 4 views
1

Hi!Symfony - Daten vor dem Senden transformieren

Ich möchte Daten vor dem Senden in die Ansicht transformieren. Die Ansicht ist JSON-Antwort mit FOSRestBundle.

Zum Beispiel habe ich eine Product-Entität mit Feld Kategorie, das ist ein Verweis auf eine Kategorie-Entität. Auf der Ausgabe möchte ich JSON nicht mit der ganzen Kategorie anzeigen, sondern nur sein ID-Feld.

Natürlich können Sie weiterhin die Einheit im Controller verarbeiten nur bestimmtes Feld aus der Kategorie zurück, aber ..

wollte ich fragen, ob es eine „Standard“ ist Lösung, wie das zu tun, vielleicht Annotation verwenden?

Danke

Antwort

2

ich die beste Praxis oder Standardweg rechnen zu erreichen, was Sie wollen (Filtern/Verarbeitungseinheit Daten vor der Rückkehr als JSON sehen), ist die Verwendung von Serializer zu machen. Sie können das Symfony Serializer Bundle: http://symfony.com/doc/current/components/serializer.html oder den JMS Serializer: http://jmsyst.com/libs/serializer in Betracht ziehen.

ich mir empfehle den JMS ein, es ist wirklich ein gute Dokumentation hat, wird die Definition vollständig durch Annotation gesteuert wird, und ein gut durchdachten Ereignisse System und ein paar Features, das ich wie folge auflisten:

- Expose/Exclude bestimmte Entitätsattribute.

- Erstellen Sie eine virtuelle Eigenschaft (Attribute) für die Entität, nachdem sie in JSON konvertiert wurde. (Wenn Sie beispielsweise Entitätsprodukt mit dem Attribut Preis haben und ein berechnetes Feld im JSON-Objekt aufrufen möchten, rufen Sie taxPrice auf, um es zu erreichen).

- Zugriffskontrolle, den Zugriff auf die/Entitäten Attribute von Attributen zu verschiedenen Gruppen zu kategorisieren.

- Pre Serialisierung und Post Serialisierung Ereignisse, so dass Sie die Daten noch weiter optimieren können.

kann ich sagen, dass die Serializer so gut mit dem Wald Bundle funktioniert, dass, sobald Sie sich daran gewöhnen, können Sie kaum Ihr Projekt die unterschiedliche Art und Weise schreiben: D.

Verwandte Themen