2013-04-15 7 views
7

Ich versuche, eine Methode zum Serialisieren hinzuzufügen, aber JMS Serialize zeigt das Feld nicht.JMS Serialize @VirtualProperty funktioniert nicht

use JMS\Serializer\Annotation\Groups; 
use JMS\Serializer\Annotation\VirtualProperty; 
use JMS\Serializer\Annotation\SerializedName; 

class Ads 
{ 
    /** 
    * @VirtualProperty 
    * @Type("string") 
    * @SerializedName("Foo") 
    * @Groups({"manage"}) 
    */ 
    public function foo(){ 
     $foo = 'foo'; 
     return $foo; 
    } 
    ... 
} 

Und dann:

use JMS\Serializer\SerializationContext; 
use JMS\Serializer\SerializerBuilder; 

... 

$context = new SerializationContext(); 
$context->setGroups(array('manage')); 

$serializer = JMS\Serializer\SerializerBuilder::create()->build(); 
$jsonContent = $serializer->serialize($ad, 'json', $context); 

Ich habe keine Beispiele gezeigt, wie VirtualProperty zu verwenden.

Ist die Syntax korrekt? Was ist falsch?

Vielen Dank.

Antwort

1

Ich habe das Problem bemerkt. Es wurde vor dem Objekt "$ ad" erstellt. Mein Fehler. Virtuelle Eigenschaft funktioniert ordnungsgemäß.

+0

Was war das Problem? Wie hast du es behoben? Probier das gleiche mit einer yaml config, funktioniert auch nicht ... Danke. – Soullivaneuh

+1

Ok gefunden, warum. Yaml Konfiguration ist ziemlich unterschiedlich. Sie müssen virtuelle Eigenschaften trennen. Siehe hier: http://jmsst.com/libs/serializer/master/reference/yml_reference – Soullivaneuh

+1

Das soll erklären, wo das Problem war, aber ich verstehe diesen Satz nicht ... :( – martin