2012-08-24 12 views
6

मैं सोच रहा था कि किसी अन्य बंडल से बंडल कॉन्फ़िगरेशन को संशोधित करना संभव है या नहीं। के कहते हैं, उदाहरण के लिए, मैं निम्नलिखित विन्यास के साथ FOSUserBundle उपयोग कर रहा हूँ करते हैं:किसी अन्य बंडल से बंडल कॉन्फ़िगरेशन संशोधित करें

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Acme\UserBundle\Entity\User 

और अब, मैं उपयोगकर्ता वर्ग बदलने के लिए जब एक विशिष्ट एक्सटेंशन (AcmeFoobarExtension) लोड हो रहा है चाहता हूँ। AcmeFoobarExtension लोड करते समय कॉन्फ़िगरेशन को बदलना संभव है? उदाहरण के लिए:

<?php 
namespace Acme\FoobarBundle\DependencyInjection; 

// use statements for dependency injection 

class FoobarExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     $container->setConfiguration(
      'fos_user.user_class', 
      'Acme\FoobarBundle\Entity\User' 
     ); 
    } 
} 

क्या ऐसा कुछ संभव है? या निर्भरता इंजेक्शन का उद्देश्य इसे हरा देता है?

संपादित करें: स्पष्ट रूप से सिम्फनी 2.2 के लिए pull request है जो इस विचार/मुद्दे को संबोधित करता है।

संपादित करें 2: यह अब सिम्फनी 2.2 में उपलब्ध है (article in the cookbook के साथ)।

+0

यदि आपके पास कोई जवाब है, तो आप दूसरों के ज्ञान के लिए अपने प्रश्न का उत्तर पोस्ट कर सकते हैं। – neontapir

उत्तर

1

सिम्फनी उपयोगकर्ता मेलिंग सूची (here's the question) पर एक ही प्रश्न पूछने के बाद, मुझे पता चला है कि इस विचार के लिए एक खुला pull request है।

यह संस्करण 2.2 के लिए है और अभी तक मास्टर में विलय नहीं हुआ है, लेकिन अंतिम गतिविधि 3 दिन पहले से है, तो चलो सबसे अच्छा उम्मीद है!

6

ऐसा लगता है कि यह अब Symfony के एक अधिकारी सुविधा है:

http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html

एक बंडल वैश्विक config मापदंडों के कॉन्फ़िगरेशन मान पहले जोड़ें कर सकते हैं। ऐसा करने के लिए, बंडल एक्सटेंशन को PrependExtensionInterface लागू करना होगा। prepend() विधि वैश्विक कॉन्फ़िगरेशन मान जोड़ सकती है।

नोट, हालांकि, मान अन्य बंडलों और कॉन्फ़िगरेशन फ़ाइल में ओवरराइट किए जा सकते हैं।

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