2012-05-07 10 views
7

से मैं एक त्रुटिबिल्कुल यकीन है कि यह कैसे डिबग करने के लिए नहीं हूँ Symfony 2 नियंत्रक

Fatal error: Call to a member function has() on a non-object in /labs/Projects/What2Do/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php on line 161

हो रही है "एक सदस्य समारोह के लिए कॉल() एक गैर वस्तु पर है।" त्रुटि सिम्फनी 2 फ़ाइल में है, मेरा नहीं ... मेरा नियंत्रक नीचे जैसा दिखता है। मैं indexAction

<?php 
class ProjectsController extends Controller { 

    /** 
    * @var EntityManager 
    */ 
    protected $em; 

    public function __construct() { 
     $this->em = $this->getDoctrine()->getEntityManager(); 
    } 

    /** 
    * @Route("/") 
    * @Route("/projects", name="listProjects") 
    * @Template() 
    */ 
    public function indexAction() { 
     $projects = $this->em->getRepository(Project::NAME)->findAll(); 

     return array('projects' => $projects); 
    } 

    /** 
    * @Route("/projects/{projId}", name="viewProject") 
    * @Template() 
    */ 
    public function viewAction($projId) { 
     // retrieve project 
     $proj = $this->em->getRepository(Project::NAME)->findOneById($projId); 
     if ($proj == null) 
      throw $this->createNotFoundException ('Invalid project'); 

     return array('proj' => $proj); 
    } 
} 
+1

लाइन 161 क्या है? सीएनए कृपया इसे हाइलाइट करें? –

उत्तर

13

Symfony 2 नियंत्रक चला रहा हूँ कोई __construct विधि इसलिए जब माता-पिता कंस्ट्रक्टर्स बुला एक बुरा विचार नहीं है, यह मदद करने के लिए नहीं जा रहा है है।

समस्या यह है कि कंटेनर को __construct के बाद इंजेक्शन दिया जाता है ताकि कन्स्ट्रक्टर में आपके सिद्धांत इकाई प्रबंधक को प्राप्त करने का प्रयास न किया जाए। मुझे पता है कि यह थोड़ा सा अंतर्ज्ञानी है लेकिन प्रबंधक को अपने एक्शन विधियों में प्राप्त करें।

और मुझे लगता है कि आपका प्रोजेक्ट :: NAME क्लास निरंतर इसमें 'प्रोजेक्टबंडल: प्रोजेक्ट' जैसा कुछ है।

+0

+1। निर्भरता सेटर इंजेक्शन हैं, इसलिए '$ this-> getDoctrine()' विफल हो जाता है, क्योंकि यह '$ this-> कंटेनर' का उपयोग करता है, जो 'शून्य' है क्योंकि निर्भरता कंटेनर सेटर-इंजेक्शन है। –

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