Quando eu acho que envolvi o sistema DI do Magento 2, algo aparece e o quebra.
Vejo no código principal maneiras diferentes de acessar um auxiliar.
Por exemplo, Magento\Catalog\Controller\Category::_initCategory
existe isso:
if (!$this->_objectManager->get('Magento\Catalog\Helper\Category')->canShow($category)) {
return false;
}
Mas no Magento\Catalog\Block\Category\View
ajudante é injetado no construtor
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);
}
Isso me levou a pensar que os auxiliares deveriam ser acessados de maneira diferente em controladores e blocos (e modelos), mas então encontrei um controlador em que um auxiliar é injetado no construtor Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute
.
Por favor, limpe o nevoeiro para mim.
Quando devo usar DI e quando devo usar objectManager
? e porque?
Eu li esta pergunta: Instanciando auxiliares no Magento 2 . Esta é apenas uma pergunta de acompanhamento sobre isso.