Weiß jemand, wie ein Modul am besten überprüfen kann, ob es unter Magento 2 Enterprise Edition ausgeführt wird und welche genaue Versionsnummer verwendet wird?
7
Weiß jemand, wie ein Modul am besten überprüfen kann, ob es unter Magento 2 Enterprise Edition ausgeführt wird und welche genaue Versionsnummer verwendet wird?
Sie müssen \Magento\Framework\App\ProductMetadataInterface
in Ihren Konstruktor injizieren .
protected $productMetadata;
public function __construct(
...
\Magento\Framework\App\ProductMetadataInterface $productMetadata,
...
) {
$this->productMetadata = $productMetadata;
parent::__construct(...);
}
Dann können Sie die aktuelle Magento-Version erhalten, indem Sie (vorausgesetzt, das ProductMetadataInterface
Objekt ist dem $productMetadata
Feld zugewiesen ):
$version = $this->productMetadata->getVersion();
Und Ausgabe (Community / Enterprise) von:
$edition = $this->productMetadata->getEdition();
Methode 1:
Verwenden Sie die Magento-Standardmethode, um eine Version Ihrer Site zu erhalten. Die Verwendung der Block-Template-Methode ist die richtige Methode, um Funktionen in Magento 2 aufzurufen.
Innerhalb der Blockdatei,
<?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();
}
}
in template
Datei,
echo $block->getVersion();
Die Verwendung von Direct Objectmanager ist in Magento 2 nicht geeignet.
$objManager = \Magento\Framework\App\ObjectManager::getInstance();
$magentoVersion = $objManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $magentoVersion->getVersion();