जब मुझे लगता है कि मैंने अपने सिर को डिगो सिस्टम के चारों ओर लपेटा हुआ है, तो मैगेंटो 2 से कुछ आता है और इसे लपेटता है।
मैं कोर कोड में सहायक को एक्सेस करने के विभिन्न तरीकों को देखता हूं।
उदाहरण के लिए Magento\Catalog\Controller\Category::_initCategoryवहाँ यह है:
if (!$this->_objectManager->get('Magento\Catalog\Helper\Category')->canShow($category)) {
return false;
}
लेकिन Magento\Catalog\Block\Category\Viewसहायक में अंतःक्षिप्त int वह कंस्ट्रक्टर है
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Catalog\Model\Layer\Category $catalogLayer,
\Magento\Framework\Registry $registry,
\Magento\Catalog\Helper\Category $categoryHelper,
array $data = array()
) {
$this->_categoryHelper = $categoryHelper;
$this->_catalogLayer = $catalogLayer;
$this->_coreRegistry = $registry;
parent::__construct($context, $data);
}
यह मुझे यह सोचने के लिए प्रेरित करता है कि नियंत्रकों और ब्लॉकों (और मॉडल) में सहायकों को अलग-अलग तरीके से एक्सेस किया जाना चाहिए, लेकिन फिर मुझे एक नियंत्रक मिला जहां कंस्ट्रक्टर में एक सहायक इंजेक्ट किया जाता है Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute।
कृपया मेरे लिए कोहरे को साफ करें।
मुझे DI का उपयोग कब करना चाहिए और मुझे कब उपयोग करना चाहिए objectManager? और क्यों?
मैंने इस प्रश्न को पढ़ा है: Magento 2 में तत्काल सहायक । यह उस पर केवल एक अनुवर्ती प्रश्न है।