2017-05-02 5 views
0

Ich habe OneToMany-Beziehungen verschachtelt. Ein Formular enthält Fragenabschnitte, in denen Fragengruppen Fragen enthalten, die mögliche Antworten enthalten.Symfony2 - JMS Serializer - Entität ausschließen, wenn getDeleted() nicht null ist

Was muss ich erreichen ist, die Abschnitte oder Gruppen oder Fragen oder möglichen Antworten zu ignorieren, die gelöscht werden (fast $ gelöscht param verwenden)

ohne Ausschluss Serialisierung oder nur Eigentum ohne (mit Ausdruck) funktioniert gut .

Aber @JMS \ Exclude (if = "Ausdruck ..") auf Klasse (nicht Eigenschaft) wird ignoriert.

use JMS\Serializer\Annotation as JMS; 

/** 
* @ORM\Entity 
* @ORM\Table(name="entity_question_section") 
* @JMS\Exclude(if="object.getDeleted() !== null") 
*/ 
class QuestionSection 
{ 
....... 
} 

Die ausschließen Anmerkung auf Klasse verwenden darf "@Target ({" PROPERTY " "Klasse", "Verfahren", "ANNOTATION"})", aber es funktioniert nicht.

Egal, welche Art von Ausdruck ich verwende, wird es alle Felder innerhalb der QuestionSection Entität ausschließen und leeres Objekt für jeden QuestionSection zurückgeben.

Wie ich

$serializer = $this->get('jms_serializer'); 
$serialized = $serializer->serialize($form, "json"); 
$response = new JsonResponse(); 
$response->setContent($serialized); 

serialisiert Wenn ich es tun müssen, von verschachtelten Schleifen tun json Antwort zu bauen es wahrscheinlich sehr schlechte Lösung sein wird.

Ich habe einige Stunden gegoogled, um dies zu tun, ich habe auch JLM \ SerializerExpressionBundle \ JLMSerializerExpressionBundle() versucht, aber es unterstützt nur auf Eigenschaft definiert werden und nur Eigentum auszuschließen.

Ich habe auch versucht Ausdruck Dienst (if = "Service ('allgemeine'). IsDeleted (Objekt)") mit

Kann mir jemand die richtige Richtung, diese zu lösen?

Danke

+0

Sie sollten diesen Ausdruck versuchen: '@JMS \ Exclude (if =" this.getDeleted()! == null ")' –

+0

Nein, funktioniert nicht. auch wenn ich if = "false" oder if = "true" mache, ist das Ergebnis dasselbe. Es schließt alle Felder aus, egal welche Bedingung vorliegt. Ich habe auch versucht, den Dienst zu verwenden, aber der Dienst wird nicht aufgerufen. Aber wenn ich Service auf Property verwende, dann wird der Service aufgerufen und funktioniert ordnungsgemäß. Im Allgemeinen sieht es so aus, dass es @Exclude mit der Bedingung –

+2

nicht wirklich unterstützt. Warum sollte man nicht einfach die softdeleteable Erweiterung verwenden? http://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html – Rufinus

Antwort

Verwandte Themen