Di.xml में गतिशील रूप से कैसे सक्षम / अक्षम करें <?


10

वर्तमान <preference/>में मेरी एक di.xml फ़ाइल में निम्नलिखित है:

<preference for="Magento\Contact\Controller\Index\Post" type="RadTest\TestModule\Controller\Contact\Post" />

मेरे पास व्यवस्थापक पैनल में मेरे मॉड्यूल के लिए सक्षम / अक्षम कॉन्फ़िगरेशन विकल्प है। मैं केवल तभी <preference>सक्षम होना चाहता हूं जब मेरा कस्टम कॉन्फ़िगरेशन विकल्प सक्षम होना चाहिए।

मैं <preference/>अपने मॉड्यूल के कॉन्फ़िगरेशन के अनुसार ओवरराइडिंग को गतिशील रूप से कैसे सक्षम और अक्षम कर सकता हूं ?

जवाबों:


13

आप कॉन्फ़िगर सेटिंग के आधार पर वरीयताओं को सक्षम और / या अक्षम नहीं कर सकते।
di.xmlसिर्फ विन्यास है। आपके पास इसमें तर्क नहीं हो सकते हैं, लेकिन आप कुछ और कर सकते हैं।
आप अपनी कक्षा में एक शर्त रख सकते हैं जो आपके कॉन्फिग फ़्लैग की जाँच करता है और तदनुसार कुछ कार्रवाई करता है।
मुझे लगता है कि आपकी कक्षा RadTest\TestModule\Controller\Contact\Postफैली हुई है Magento\Contact\Controller\Index\Postक्योंकि आपको कम से कम एक विधि को ओवरराइड करना है।
मान लीजिए कि आपको विधि को ओवरराइड करना है execute
आप अपनी कक्षा को ऐसा कर सकते हैं:

namespace RadTest\TestModule\Controller\Contact;
class Post extends \Magento\Contact\Controller\Index\Post
{
    ....
    public function execute()
    {
        if (your config setting is disabled) {
            return parent::execute();
        }
        //your custom logic here
    }
}

1
यह वास्तव में है कि मैं क्या कर रहा हूं और सोच रहा था कि अगर उन्हें गतिशील रूप से अक्षम करने का कोई तरीका है तो यह अच्छा होगा। अब मुझे पता है कि हम नहीं कर सकते। आपका बहुत बहुत धन्यवाद! :)
क्सीनन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.