2013-04-15 11 views
7

Próbuję dodać metodę serializacji, ale JMS Serialize nie pokazuje tego pola.JMS Serialize @VirtualProperty nie działa

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; 
    } 
    ... 
} 

A potem:

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); 

Nie widziałem żadnych przykładów, jak używać VirtualProperty.

Czy składnia jest poprawna? Co jest nie tak?

Dziękuję.

Odpowiedz

1

Zauważyłem problem. Utworzono przed obiektem "$ ad". Moja wina. Właściwość wirtualna działa poprawnie.

+0

W czym problem? Jak to naprawiłeś? Wypróbuj to samo z konfiguracją yaml, nie działa też ... Dzięki. – Soullivaneuh

+1

Ok znalazłem dlaczego. Konfiguracja Yaml jest zupełnie inna. Musisz oddzielić właściwości wirtualne. Zobacz tutaj: http://jmsyst.com/libs/serializer/master/reference/yml_reference – Soullivaneuh

+1

To ma wyjaśnić, gdzie był problem, ale nie rozumiem tego zdania ... :( – martin