2013-04-15 27 views
7

我想添加一个序列化的方法,但JMS序列化不显示字段。JMS序列化@VirtualProperty不起作用

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

然后:

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

我还没有看到如何使用VirtualProperty任何例子。

语法正确吗?哪里不对?

谢谢。

回答

1

我注意到了这个问题。在对象“$ ad”之前创建了。我的错。虚拟财产正常运作。

+0

问题是什么?你怎么修好它的?尝试与yaml配置相同,不工作...谢谢。 – Soullivaneuh

+1

确定为什么。 Yaml配置完全不同。你必须分开虚拟属性。看到这里:http://jmsyst.com/libs/serializer/master/reference/yml_reference – Soullivaneuh

+1

这应该解释问题出在哪里,但我不明白这句话...... :( – martin