परिदृश्य: मैं एक Magento के 2 मॉड्यूल डेवलपर हूं। मैं एक कॉन्फ़िगरेशन फ़ाइल बनाना चाहता हूं app/etc
। मैं चाहता हूं कि यह फाइल क्षेत्र द्वारा "स्कूप" हो
app/etc/my_file.xml
app/etc/frontend/my_file.xml
app/etc/adminhtml/my_file.xml
Magento 1 में मैं बस एक config.xml
और अपने रास्ते पर हो जाएगा। एक्सएमएल फाइल में ही एरिया स्कूपिंग हुआ। हालाँकि, Magento 2 इसे बहुत अलग तरीके से पेश करता है
मैगेंटो 2 में, मुझे इन स्कोप्ड कॉन्फ़िगरेशन फ़ाइलों को पढ़ने के लिए कौन सी क्लास की फाइल बनानी चाहिए? यह Magento 2 स्रोत से स्पष्ट नहीं है कि ऐसा करने का "सही" तरीका क्या है। मुख्य कोड कई दृष्टिकोण लेते हैं, और उनमें से कोई भी एक @api
विधि के साथ चिह्नित नहीं है । इससे यह जानना मुश्किल हो जाता है कि इस सामान्य मॉड्यूल डेवलपर कार्य को कैसे आगे बढ़ाया जाए। द्वितीयक साइड-इफ़ेक्ट के रूप में, यह जानना भी मुश्किल हो जाता है कि कोर कॉन्फ़िगरेशन फ़ाइलों से Magento मॉड्यूल डेवलपर को कैसे पढ़ना चाहिए ।
एक तरफ, ऐसा लगता है कि "सही" करने के लिए फ़ाइल सिस्टम रीडर ऑब्जेक्ट बनाना है। उदाहरण के लिए, Magento import.xml
फ़ाइल को निम्न के साथ लोड करता है
#File: vendor/magento/module-import-export/Model/Import/Config/Reader.php
namespace Magento\ImportExport\Model\Import\Config;
class Reader extends \Magento\Framework\Config\Reader\Filesystem
{
public function __construct(
//...
$fileName = 'import.xml',
//...
) {
parent::__construct(
$fileResolver,
$converter,
$schemaLocator,
$validationState,
$fileName,
$idAttributes,
$domDocumentClass,
$defaultScope
);
}
//...
}
बेस Magento\Framework\Config\Reader\Filesystem
क्लास ऐसा लगता है कि इसमें क्षेत्र के दायरे को हल करने के लिए कोड है।
हालाँकि कुछ Magento की कॉन्फ़िगरेशन फ़ाइल इस पैटर्न से बच निकली हैं। जबकि इन फ़ाइलों के लिए पाठक हैं ( event.xml
इस उदाहरण में)
vendor/magento/framework/Event/Config/Reader.php
इन पाठकों का उपयोग करने वाली "स्कोप्ड डेटा" कक्षाएं भी हैं।
#File: vendor/magento/framework/Event/Config/Data.php
class Data extends \Magento\Framework\Config\Data\Scoped
{
public function __construct(
\Magento\Framework\Event\Config\Reader $reader,
//...
) {
parent::__construct($reader, $configScope, $cache, $cacheId);
}
}
इससे यह प्रतीत होता है कि स्कोप रीडर क्लासेस एक मॉड्यूल डेवलपर को बनाना चाहिए। लेकिन सभी कॉन्फ़िगरेशन फ़ाइलों में ये स्कैन किए गए पाठक नहीं हैं।
वहाँ Magento 2 मॉड्यूल डेवलपर्स का पालन करने के लिए एक स्पष्ट रास्ता है? या यह सिर्फ कुछ है Magento 2 मॉड्यूल डेवलपर्स को अपने तरीके से संपर्क करना चाहिए, और परिणामस्वरूप अराजकता / गैर-मानक-कॉन्फ़िगरेशन-लोडिंग केवल व्यवसाय करने की लागत है?
आधिकारिक दस्तावेज उपलब्ध वर्ग के कुछ कवर का एक अच्छा काम करता है, लेकिन कुछ भी नहीं है कि इस तथ्य से मेल कोई स्पष्ट मार्गदर्शन जिस पर ठोस कार्यान्वयन हम उपयोग करने के लिए लगता है रहे हैं उसके, या अगर उम्मीद है कि हर मॉड्यूल कैसे इस पर क्या करने का फैसला करता है अपने खुद।