Magento 2 - Программная проверка версии Magento (CE/EE)


Кто-нибудь знает, как лучше всего модуль может проверить, выполняется ли он в Magento 2 Enterprise Edition и какой точный номер версии используется?

Author: TiEul, 2016-09-01

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();

 9
Author: Bartłomiej Szubert, 2016-09-01 12:31:48

Способ 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();
 2
Author: Rakesh Jesadiya, 2016-09-01 12:29:05