मुझे अपने मॉडल को नियंत्रक विधि से स्थानांतरित करने की आवश्यकता है, इसलिए मुझे इसे किसी सेवा में बदलने में मदद मिली। सेवा स्वयं ही काम करती है, लेकिन मुझे इस सेवा के अंदर से सिद्धांत और कर्नेल से जुड़ने में सक्षम होना चाहिए। सबसे पहले मैंने सिद्धांत को सक्षम करने की कोशिश की, लेकिन इससे समस्याएं पैदा हुईं। मै इसे काम मे कैसे ले सकता हूँ? मैंने दस्तावेज़ों का पालन किया है और यह कोड मिला है। मुझे नहीं पता कि मुझे नीचे त्रुटि क्यों मिली। आपकी सहायता के लिए अग्रिम रूप से धन्यवाद।Symfony2 में सेवा निर्भरता इंजेक्शन
मेरे config है:
CSVImport.php
namespace Tools\TFIBundle\Model;
use Doctrine\ORM\EntityManager;
class CSVImport {
protected $em;
public function __construct(EntityManager $em) {
$this->em = $em;
}
एप्लिकेशन/config/config.yml
services:
csvimport:
class: Tools\TFIBundle\Model\CSVImport
arguments: [ @doctrine.orm.entity_manager ]
नियंत्रक में कार्रवाई
$cvsimport = $this->get('csvimport');
मेरी त्रुटि
Catchable Fatal Error: Argument 1 passed to
Tools\TFIBundle\Model\CSVImport::__construct() must be an instance of
Doctrine\ORM\EntityManager, none given, called in
.../Tools/TFIBundle/Controller/DefaultController.php on line 58 and defined in
.../Tools/TFIBundle/Model/CSVImport.php line 12
संपादित करें, मेरे कार्य कोड: कर्नेल के साथ
सेवा वर्ग कोड इसे से जुड़े
namespace Tools\TFIBundle\Model;
use Doctrine\ORM\EntityManager,
AppKernel;
class CSVImport {
protected $em;
protected $kernel;
protected $cacheDir;
public function __construct(EntityManager $em, AppKernel $k) {
$this->em = $em;
$this->kernel = $k;
}
इस संकेत ने मुझे वास्तविक समस्या खोजने में मदद की, कॉन्फ़िगरेशन ठीक था, लेकिन मुझे उस सेवा में नियंत्रक कोड गलत कॉल मिला जो उन त्रुटियों को बना देता था। – nysander
वही बात डीबीएएल कनेक्शन प्राप्त करने के लिए काम करती है। क्या कोई समझा सकता है कि इसके पीछे तर्क क्या है? – Robert