Ketika saya pikir saya mendapatkan kepala saya melilit sistem DI dari Magento 2, sesuatu muncul dan melepaskannya.
Saya melihat dalam kode inti berbagai cara untuk mengakses pembantu.
Misalnya Magento\Catalog\Controller\Category::_initCategory
ada ini:
if (!$this->_objectManager->get('Magento\Catalog\Helper\Category')->canShow($category)) {
return false;
}
Tetapi dalam Magento\Catalog\Block\Category\View
helper disuntikkan ke konstruktor
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);
}
Ini membuat saya berpikir bahwa para pembantu harus diakses secara berbeda di dalam pengontrol dan blok (dan model) tetapi kemudian saya menemukan sebuah pengontrol di mana seorang pembantu dimasukkan ke dalam konstruktor Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute
.
Tolong bersihkan kabut untuk saya.
Kapan saya harus menggunakan DI dan kapan saya harus menggunakan objectManager
? dan mengapa?
Saya telah membaca pertanyaan ini: Instantiating Helpers in Magento 2 . Ini hanya pertanyaan lanjutan untuk itu.