2011-04-27 5 views
6

कुछ लेख हैं जो इस विषय को छूते हैं, लेकिन उनमें से कोई भी मेरे लिए व्यावहारिक उपयोग करने योग्य समाधान प्रतीत नहीं होता है। मेरा लक्ष्य कुछ बुनियादी तरीकों (जिन्हें मुझे प्रत्येक नियंत्रक में वैसे भी चाहिए) को बेसकंट्रोलर में रखना है, उदा।Symfony2 नियंत्रकों के लिए बेसक्लास को कार्यान्वित करने के लिए कैसे करें

$this->getEntityManager(); 
    $this->getRequest(); 
    $this->getRepository($entityName); 

यह कैसे किया जा सकता है?

AFAIK हमें बेसकंट्रोलर में सेवाओं को इंजेक्ट करना है, लेकिन मैं कक्षाओं को अपने सुपरक्लास के लिए सेवा का उपयोग करने के लिए कैसे कहूं? नियंत्रकों और निर्भरता इंजेक्शन [1] के बारे में कुछ सभ्य लेख नहीं है, लेकिन अंत में मुझे लगता है कि दृष्टिकोण के साथ अटक गया भी, यहाँ मेरी टिप्पणी देखें: [2]

[1] http://miller.limethinking.co.uk/2011/04/15/symfony2-controller-as-service/

[2] http://miller.limethinking.co.uk/2011/04/15/symfony2-controller-as-service/#comment-579

उत्तर

3

स्यूडोकोड

MyBaseController impliments Symfony\Component\Di\ContainerAwareInterface 
    setContainer($container) 
    $this->container = $container 

    getEntityManager 
    return $this->container->get('doctrine.orm.entity_manager') 
+0

संकेत के लिए धन्यवाद। जब मैं बेसकंट्रोलर का उपयोग करता हूं तो मुझे निम्न त्रुटि संदेश मिलता है: "घातक त्रुटि: घोषणा ... बंडल \ नियंत्रक \ BaseController :: setContainer() Symfony \ Component \ DependencyInjection \ ContainerAwareInterface :: setContainer() के साथ संगत होना चाहिए लाइन 9 पर /Library/WebServer/Documents/...Bundle/Controller/BaseController.php में "। सेटर इस तरह दिखता है: 'समारोह setContainer (\ Symfony \ घटक \ DependencyInjection \ ContainerInterface $ कंटेनर) { \t \t $ this-> कंटेनर = $ कंटेनर; } ' – stoefln

+0

' $ कंटेनर 'शून्य हो सकता है, इसलिए' (... \ कंटेनर इंटरफेस $ कंटेनर = शून्य) होना चाहिए ' – Koc

+0

धन्यवाद- बहुत अच्छा काम करता है! – stoefln