Kafamı Magento 2'den DI sisteminin etrafına sardığımı düşündüğümde bir şey ortaya çıkıyor ve çözülüyor.
Çekirdek kodda bir yardımcıya erişmek için farklı yollar görüyorum.
Örneğin Magento\Catalog\Controller\Category::_initCategory
burada:
if (!$this->_objectManager->get('Magento\Catalog\Helper\Category')->canShow($category)) {
return false;
}
Ama Magento\Catalog\Block\Category\View
yardımcıya yapıcıya enjekte edilir
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);
}
Bu bana yardımcıların kontrolörlerde ve bloklarda (ve modellerde) farklı şekilde erişilmesi gerektiğini düşündürdü, ancak daha sonra yapıcıya bir yardımcı enjekte edildiği bir kontrolör buldum Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute
.
Lütfen benim için sisi temizleyin.
Ne zaman DI kullanmalıyım ve ne zaman kullanmalıyım objectManager
? ve neden?
Bu soruyu okudum: Magento 2'deki Yardımcıları Oluşturma . Bu sadece bununla ilgili bir soru.