Magento 2 - Программная проверка версии Magento (CE/EE)
Кто-нибудь знает, как лучше всего модуль может проверить, выполняется ли он в Magento 2 Enterprise Edition и какой точный номер версии используется?
2 answers
Вы должны ввести \Magento\Framework\App\ProductMetadataInterface
в свой конструктор.
protected $productMetadata;
public function __construct(
...
\Magento\Framework\App\ProductMetadataInterface $productMetadata,
...
) {
$this->productMetadata = $productMetadata;
parent::__construct(...);
}
Затем вы можете получить текущую версию Magento (предполагая, что объект ProductMetadataInterface
назначен полю $productMetadata
):
$version = $this->productMetadata->getVersion();
И издание (Сообщество/Предприятие) от:
$edition = $this->productMetadata->getEdition();
Способ 1:
Используйте стандартный способ Magento для получения версии вашего сайта, использование блочного шаблона - правильный способ вызова любой функции в magento 2,
Внутренний файл блока,
<?php
namespace Vendor\Modulename\Block
class Version extends \Magento\Framework\View\Element\Template{
protected $_productMetadata;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Framework\App\ProductMetadataInterface $productMetadata,
array $data = []
) {
parent::__construct($context,$data);
$this->_productMetadata = $productMetadata;
}
public function getVersion()
{
return $this->_productMetadata->getVersion();
}
}
Внутри template
файла,
echo $block->getVersion();
Использование Direct Objectmanager не является правильным способом использования в magento 2,
$objManager = \Magento\Framework\App\ObjectManager::getInstance();
$magentoVersion = $objManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $magentoVersion->getVersion();