2011-11-05 10 views
5

Symfony2 में, मैं कस्टम वर्ग या सेवा में सिद्धांत के इकाई प्रबंधक को जोड़ने के बारे में कैसे जा सकता हूं?मैं कस्टम क्लास या सेवा में एंटिटी मैनेजर कैसे जोड़ सकता हूं?

मैं $em = $this->get("doctrine.orm.entity_manager"); और $em = $this->getDoctrine()->getEntityManager();

दोनों की कोशिश की है में विफल रहा है, जो मुझे कोशिश करते हैं और अपने कस्टम वर्ग/सेवा के साथ नियंत्रक वर्ग का विस्तार करने के लिए नेतृत्व, और कहा कि आग की एक विशाल गेंद में मृत्यु हो गई।

उत्तर

7

आपको अपनी कस्टम सेवा में इकाई प्रबंधक सेवा इंजेक्ट करने की आवश्यकता है। आपकी सेवा परिभाषा इस तरह दिखना चाहिए:

my.service.name: 
    class:  my\class 
    arguments: [ @doctrine.orm.default_entity_manager ] 

सुनिश्चित करें कि आपकी सेवा __construct विधि एक तर्क के रूप इकाई प्रबंधक लेता है सुनिश्चित करें।

अधिक जानकारी के लिए Service Container chapter देखें।

Btw, $this->getDoctrine() एक शॉर्टकट विधि है कि केवल एक वर्ग है कि Symfony\Bundle\FrameworkBundle\Controller\Controller

+0

सिम्फनी 2.3 में मैं "@ doctrine.orm.entity_manager" का उपयोग कर रहा हूं। क्या "@ doctrine.orm.entity_manager" और "@ doctrine.orm.default_entity_manager" के बीच कोई अंतर है? –

8

फैली में काम करेंगे आप नहीं EntityManager तक पहुँचने के लिए एक सेवा के रूप में अपने नियंत्रक को परिभाषित करने की क्या ज़रूरत है है। उपरोक्त वर्णित Controller::getDoctrine() विधि सिद्धांत की सेवा वास्तव में उपलब्ध है यह जांचने के बाद $this->container->get('doctrine') पर कॉल करके डॉक्टर रजिस्ट्री को लौटती है। यह $this->container->get(..) और नहीं $this->get(..) एक वर्ग में विस्तार/लागू करने ContainerAware है कि

public function getEntityManager() { 
    return $this->container->get('doctrine')->getEntityManager(); 
} 

नोट:

आप अपने कस्टम वर्ग/नियंत्रक ContainerAware का विस्तार करने और की तरह एक शॉर्टकट विधि को परिभाषित करते हैं।

+0

'कंटेनरवेयर 'को विस्तारित करने पर शानदार बिंदु, धन्यवाद! – Nick

+0

एक आकर्षण की तरह काम करना! धन्यवाद दोस्त :) – Marc

+0

मुझे उपरोक्त विधि का उपयोग करते समय "किसी सदस्य फ़ंक्शन को() को गैर-ऑब्जेक्ट पर प्राप्त करें ..." प्राप्त करें। – someuser

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

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