2015-10-12 5 views
5

सिम्फनी 2.7 में अपग्रेड करने के बाद से, मुझे लगता है कि जुड़े हुए संपर्कों की सरणी को क्रमबद्ध करने का प्रयास करते समय मुझे 'परिपत्र संदर्भ पता चला है' त्रुटियां मिलती रहती हैं एक दिया समूह वे कई से कई संगठनों में स्थापित हैं (एक समूह में कई संपर्क हैं; एक संपर्क में कई समूह-संघ हैं)।'सर्कुलर संदर्भ का पता चला है' त्रुटि जब कई से अधिक-संबंधित ऑब्जेक्ट्स को क्रमबद्ध करना

अब, मैंने 2.7 upgrade post के अनुसार क्रमबद्धता समूहों का उपयोग करने के लिए मार्गदर्शिका का पालन किया है, लेकिन फिर भी त्रुटि मिलती है।

$group = $this->getDoctrine() 
    ->getRepository('TwbGroupsBundle:ContactGroup') 
    ->find($id); 
$groupContacts = $group->getContacts(); 

$encoder = new JsonEncoder(); 
$normalizer = new ObjectNormalizer(); 
$serializer = new Serializer(array($normalizer), array($encoder)); 

$json = $serializer->serialize($groupContacts, 'json', array(
    'groups' => array('public') 
)); 

जब $serializer->serialize() चल रहा है, मैं 1 वृत्तीय संदर्भ के बाद CircularReferenceException मिलती है: इस के लिए मेरे नियंत्रक कोड वर्तमान में इस प्रकार है। अब तक मैं अपने संपर्क इकाई इतने तरह कॉन्फ़िगर किया है, @Groups एनोटेशन के साथ:

/** 
* Contact 
* 
* @ORM\Table(name="tblContacts") 
* @ORM\Entity(repositoryClass="Twb\Bundle\ContactsBundle\Entity\Repository\ContactRepository") 
*/ 
class Contact implements ContactInterface 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="ContactName", type="string", length=50, nullable=true) 
    * @Groups({"public"}) 
    */ 
    private $contactname; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="ContactID", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    * @Groups({"public"}) 
    */ 
    private $contactid; 

    /** 
    * 
    * @var ArrayCollection 
    * @ORM\ManyToMany(targetEntity="Twb\Bundle\GroupsBundle\Entity\ContactGroup", inversedBy="contacts") 
    * @ORM\JoinTable(name="tblContactsGroupsAssignments", 
    *  joinColumns={@ORM\JoinColumn(name="contactId", referencedColumnName="ContactID")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="contactGroupId", referencedColumnName="id")} 
    * ) 
    */ 
    protected $contactGroups; 

    // ...getters/setters and so on 
} 

और मेरे ContactGroup इकाई:

/** 
* ContactGroup 
* 
* @ORM\Table(name="tblContactsGroups") 
* @ORM\Entity 
*/ 
class ContactGroup 
{ 
    // ... 

    /** 
    * 
    * @var Contact 
    * 
    * @ORM\ManyToMany(targetEntity="Twb\Bundle\ContactsBundle\Entity\Contact", mappedBy="contactGroups") 
    */ 
    private $contacts; 

    // ... 
} 

वहाँ कुछ मैं यहाँ याद कर रहा हूँ घेरा समस्या को हल प्राप्त करने के लिए है ? बहुत धन्यवाद।

+0

http://jmsyst.com/bundles/JMSSerializerBundle का उपयोग करने का प्रयास करें – Jekis

उत्तर

0

यह कॉन्फ़िगरेशन के साथ कुछ गलत लगता है। आप क्रमबद्धता समूहों एनोटेशन सक्षम करने के लिए:

# app/config/config.yml 
framework: 
# ... 
serializer: 
    enable_annotations: true 

और समुचित उपयोग बयान ContactGroup इकाई कक्षा में उपस्थित हो गया है

use Symfony\Component\Serializer\Annotation\Groups; 
1
$normalizers->setCircularReferenceHandler(function ($object) { 
     return $object->getId(); 
    }); 

आप अपने objectNormalizer के कहने बनाने के बाद बस इसे जोड़ने;

संबंधित मुद्दे