2013-04-15 9 views
7

काम नहीं करता है मैं serialize करने के लिए एक विधि जोड़ने की कोशिश कर रहा हूं, लेकिन जेएमएस सीरियलाइज फ़ील्ड नहीं दिखाता है।JMS Serialize @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

मैंने समस्या देखी है। ऑब्जेक्ट "$ विज्ञापन" से पहले बनाया गया था। मेरी गलती। वर्चुअल प्रॉपर्टी ठीक से काम कर रही है।

+0

समस्या क्या थी? आपने यह कैसे फिक्स किया? एक yaml कॉन्फ़िगरेशन के साथ इसे आज़माएं, काम न करें ... धन्यवाद। – Soullivaneuh

+1

ठीक है क्यों मिला। Yaml विन्यास काफी अलग है। आपको आभासी गुणों को अलग करना होगा। यहां देखें: http://jmsyst.com/libs/serializer/master/reference/yml_reference – Soullivaneuh

+1

यह समझाया जाना चाहिए कि समस्या कहां थी लेकिन मुझे यह वाक्य समझ में नहीं आया ... :( – martin