2011-12-30 7 views
17

मैं Symfony2/Doctrine2 Data Fixtures में सेवा कैसे इंजेक्ट कर सकता हूं? मैं डमी उपयोगकर्ताओं को बनाना चाहता हूं और अपने पासवर्ड एन्कोड करने के लिए security.encoder_factory सेवा की आवश्यकता है।सिम्फनी 2 डेटा फिक्स्चर में सेवा कैसे इंजेक्ट करें?

मैं एक सेवा

myapp.loadDataFixture: 
    class: myapp\SomeBundle\DataFixtures\ORM\LoadDataFixtures 
    arguments: 
     - '@security.encoder_factory' 
तब मेरे डाटा स्थिरता

class LoadDataFixtures implements FixtureInterface { 

    protected $passwordEncoder; 

    public function __construct($encoderFactory) { 
     $this->passwordEncoder = $encoderFactory->getEncoder(new User()); 
    } 

    public function load($em) { 

में

के रूप में मेरे डाटा स्थिरता को परिभाषित लेकिन जैसे

चेतावनी कुछ मिला की कोशिश की: के लिए गुम तर्क 1। .. \ DataFixtures \ ORM \ LoadDataFixtures :: __ निर्माण(), में बुलाया गया ...

उत्तर

37

Using the Container in the Fixtures अनुभाग बिल्कुल वही वर्णन करता है जो आपको चाहिए।

आपको बस अपनी मजबूती में ContainerAwareInterface को लागू करने की आवश्यकता है। यह सिम्फनी को सेटर-इंजेक्शन के माध्यम से कंटेनर इंजेक्ट करने का कारण बन जाएगा। एक उदाहरण इकाई इस प्रकार दिखाई देगा:

class LoadDataFixtures implements FixtureInterface, ContainerAwareInterface { 

    /** 
    * @var ContainerInterface 
    */ 
    private $container; 

    public function setContainer(ContainerInterface $container = null) 
    { 
     $this->container = $container; 
    } 

    public function load($em) { 

आप एक सेवा के रूप स्थिरता रजिस्टर करने की आवश्यकता नहीं है। use के माध्यम से प्रयुक्त कक्षाओं को आयात करना सुनिश्चित करें।

+2

यह प्रश्न के लिए एक ठोस सॉल्यूशन की तरह नहीं दिखता है – murtho

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