Khi tôi nghĩ rằng tôi đã quấn đầu quanh hệ thống DI từ Magento 2, một cái gì đó xuất hiện và hủy kết thúc nó.
Tôi thấy trong mã lõi các cách khác nhau để truy cập một người trợ giúp.
Ví dụ trong Magento\Catalog\Controller\Category::_initCategory
đó là:
if (!$this->_objectManager->get('Magento\Catalog\Helper\Category')->canShow($category)) {
return false;
}
Nhưng trong Magento\Catalog\Block\Category\View
helper được tiêm int anh constructor
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);
}
Điều này khiến tôi nghĩ rằng những người trợ giúp nên được truy cập khác nhau trong các bộ điều khiển và khối (và mô hình) nhưng sau đó tôi tìm thấy một bộ điều khiển trong đó một trình trợ giúp được đưa vào trong hàm tạo Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute
.
Xin hãy xóa sương mù cho tôi.
Khi nào tôi nên sử dụng DI và khi nào nên sử dụng objectManager
? và tại sao?
Tôi đã đọc câu hỏi này: Người trợ giúp tức thì trong Magento 2 . Đây chỉ là một câu hỏi tiếp theo về điều đó.