संकलन में संदर्भ वस्तु में Magento 2 StoreManagerInterface पहले से मौजूद है


15

मुझे अपने एक्सटेंशन में यह त्रुटि मिल रही है।

PackageName \ ModuleName \ Block \ बढ़ी
कक्षा में गलत निर्भरता संदर्भ वस्तु

 public function __construct(
    \Magento\Framework\View\Element\Template\Context $context,
    \Magento\Catalog\Model\Session $catalogSession,
    \Magento\Store\Model\StoreManagerInterface $storeManager,        
    array $data = []

)
{
    parent::__construct($context, $data);
    $this->_catalogSession = $catalogSession;
    $this->_storeManager = $storeManager;      
}

जवाबों:


12

आपको \Magento\Store\Model\StoreManagerInterfaceअपने निर्माता में इंजेक्ट करने की आवश्यकता नहीं है क्योंकि मूल वर्ग पहले से ही ऐसा करता है।

मुझे लगता है कि आपके ब्लॉक का विस्तार Magento\Framework\View\Element\Templateपहले से ही निम्न कोड में है:

protected $_storeManager;

public function __construct(Template\Context $context, array $data = [])
{
    $this->validator = $context->getValidator();
    $this->resolver = $context->getResolver();
    $this->_filesystem = $context->getFilesystem();
    $this->templateEnginePool = $context->getEnginePool();
    $this->_storeManager = $context->getStoreManager();
    $this->_appState = $context->getAppState();
    $this->templateContext = $this;
    $this->pageConfig = $context->getPageConfig();
    parent::__construct($context, $data);
}

इस प्रकार आप अपना कोड बदल सकते हैं:

public function __construct(
    \Magento\Framework\View\Element\Template\Context $context,
    \Magento\Catalog\Model\Session $catalogSession,   
    array $data = []

)
{
    parent::__construct($context, $data);
    $this->_catalogSession = $catalogSession;
}

3
आह ... 13 सेकंड बहुत देर हो गई।
मेरियस

@ मोर हाहा। मुझे अभी भी यह देखना दिलचस्प है कि दो गैर देशी अंग्रेजी बोलने वाले एक ही बात को कैसे समझाते हैं =)
राफेल एट डिजिटल पियानिज्म

@ मार्सी और राफेल +2। इतनी जल्दी।
खोआ TruongDinh

5

आपको \Magento\Store\Model\StoreManagerInterface $storeManagerअपनी कक्षा पर निर्भरता के रूप में जोड़ने की आवश्यकता नहीं है ।
आप पहले से ही के एक inplementation की पहुंच है StoreManagerInterfaceमेंMagento\Framework\View\Element\Template\Context कक्षा ।
इसे देखें

तो आप अपने निर्माता को इस तरह देख सकते हैं:

public function __construct(
    \Magento\Framework\View\Element\Template\Context $context,
    \Magento\Catalog\Model\Session $catalogSession,
    array $data = []

)
{
    parent::__construct($context, $data);
    $this->_catalogSession = $catalogSession;
}

और आप अभी भी storeManagerइस तरह से सदस्य चर का उपयोग कर पाएंगे $this->_storeManager


5

Contextवस्तु में निम्नलिखित तरीके उपलब्ध हैं ( \Magento\Framework\View\Element\Template\Context)

print_r(get_class_methods($context))

Array
(
    [0] => __construct
    [1] => getResolver
    [2] => getValidator
    [3] => getFilesystem
    [4] => getLogger
    [5] => getViewFileSystem
    [6] => getEnginePool
    [7] => getAppState
    [8] => getStoreManager
    [9] => getPageConfig
    [10] => getCache
    [11] => getDesignPackage
    [12] => getEventManager
    [13] => getLayout
    [14] => getRequest
    [15] => getSession
    [16] => getSidResolver
    [17] => getScopeConfig
    [18] => getInlineTranslation
    [19] => getUrlBuilder
    [20] => getAssetRepository
    [21] => getViewConfig
    [22] => getCacheState
    [23] => getEscaper
    [24] => getFilterManager
    [25] => getLocaleDate
)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.