Antworten:
Bis zur Magento-Version 2.0.7 wurde die Versionsnummer AppInterface::VERSION
konstant gehalten.
Mit der Veröffentlichung von Magento 2.1 wurde die Konstante entfernt.
Also bis 2.0.7, wenn Sie die adminhtml-Fußzeilendatei überprüfen, in der die Version angezeigt wird
Es bezog sich auf die \Magento\Framework\AppInterface::VERSION
Konstante.
Aber seit Magento 2.1 Release verwendet die Footer-Datei nun die, \Magento\Backend\Block\Page\Footer::getMagentoVersion()
die wiederum die aufruft \Magento\Framework\App\ProductMetadata::getVersion()
.
Bisher sind die ProductMetadata::getVersion()
verwendet , um den Wert der Konstanten zurückzukehren \Magento\Framework\AppInterface::VERSION
, aber jetzt analysiert es die composer.json
sowie aus composer.lock
und gibt die entsprechende magento Version
Egal auf welcher Version 2.0.x oder 2.1.x Sie sich befinden, wenn Sie die \Magento\Framework\App\ProductMetadata::getVersion()
Methode verwenden, erhalten Sie immer die richtige Magento-Version.
Fazit:
Magento 1:
Mage::getVersion() //will return the magento version
Magento 2:
//Updated to use object manager
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
$version = $productMetadata->getVersion(); //will return the magento version
Sie können dies in 2.0.x-Versionen verwenden:
echo \Magento\Framework\AppInterface::VERSION;
Für Version 2.1:
Weg 1 mit DI:
public function __construct(
\Magento\Framework\App\ProductMetadataInterface $productMetadata
) {
$this->productMetadata = $productMetadata;
}
public function getMagentoVersion()
{
return $this->productMetadata->getVersion();
}
Weg 2, mit ObjectManager direkt:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();
Erwähnte Lösungen sind ab Magento 2.1 nicht mehr anwendbar ( \Magento\Framework\AppInterface::VERSION
Konstante wurde entfernt)
Die neue Methode zum Abrufen der Version besteht darin, sie aus der Product Metadata Instance abzurufen (liest die Version aus composer.json):
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
(Besser Produkt-Metadaten in Konstruktor einfügen als \Magento\Framework\App\ProductMetadataInterface
)
Zusätzlich zu den anderen Antworten können Sie die Hauptversion (zum Beispiel 2.1) erhalten, indem Sie auf Ihrer Magento 2-Website zugreifen /magento_version
.
Für den Fall, dass jemand es manuell finden muss. Die Basisversion des Magento-Moduls befindet sich in dieser Composer-Datei:
vendor/magento/magento2-base/composer.json
Auch wie oben vorgeschlagen, um den folgenden Code zum Laufen zu bringen:
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
\Magento\Framework\App\ProductMetadata
Erfordert nun, dass die Instanz von ComposerJsonFinder
zum Zeitpunkt der Instanziierung übergeben wird.
Ein Beispiel, das ich gefunden habe in dev/tests/integration/testsuite/Magento/Framework/Composer/ComposerInformationTest.php
:
$directories = [
DirectoryList::CONFIG => [DirectoryList::PATH => __DIR__ . '/_files/'],
DirectoryList::ROOT => [DirectoryList::PATH => __DIR__ . '/_files/' . $composerDir],
DirectoryList::COMPOSER_HOME => [DirectoryList::PATH => __DIR__ . '/_files/' . $composerDir],
];
$this->directoryList = $this->objectManager->create(
'Magento\Framework\App\Filesystem\DirectoryList',
['root' => __DIR__ . '/_files/' . $composerDir, 'config' => $directories]
);
$this->composerJsonFinder = new ComposerJsonFinder($this->directoryList);
Der obige Code dient nur zu Informationszwecken. Sie müssen mehr einarbeiten, damit es funktioniert.
Sie können den folgenden Befehl ausführen, um die Magento-Version zu erhalten:
php bin/magento --version
Für Benutzer wie Unix
Dazu muss kein PHP-Code geschrieben werden. Da Magento 2 Composer verwendet, wird alles einfacher. Sie können dies auf zwei Arten tun:
Überprüfen Sie die Datei composer.json und suchen Sie nach einem Schlüssel namens version. Wenn Sie wie ich sind, der das Terminal gerne benutzt, können Sie so etwas wie im Stammverzeichnis des Projekts tun.
composer licenses | grep Version:
Dies gibt die Version des M2 zurück. Wenn Sie überprüfen möchten, ob es sich um eine Community- oder eine Enterprise-Version handelt, gehen Sie wie folgt vor:
composer licenses | grep Name:
Überprüfen Sie einfach die Datei composer.json im Stammverzeichnis von magento2. Sie finden einen Text wie diesen
"version": "2.1.2",
composer.json
enthält möglicherweise eine Versionsbeschränkung wie "^ 2.1", die nicht die genaue Version angibt. Sie sollten die composer.lock
Datei überprüfen, um festzustellen, welche Version aktuell installiert ist.
Versuche dies:
<?php echo __('Magento'); ?>
<?php echo __('ver. %1', \Magento\Framework\AppInterface::VERSION) ?>
Für Version 2.1:
<?php
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
?>
<?php echo __('ver. %1', $version) ?>
Hier sind einige Möglichkeiten, die Magento-Version zu überprüfen
Mage::getVersion() //will return the magento version
Überprüfen Sie die Magento 2-Version
Sie können dies in 2.0.x-Versionen verwenden:
echo \Magento\Framework\AppInterface::VERSION;
Für Version 2.1:
Der erste Weg mit DI:
public function __construct( \Magento\Framework\App\ProductMetadataInterface $productMetadata ) {
$this->productMetadata = $productMetadata;
}
public function getMagentoVersion() {
return $this->productMetadata->getVersion();
}
Die zweite Möglichkeit, ObjectManager direkt zu verwenden:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();
Sie können den folgenden Befehl ausführen, um die Magento 2-Version abzurufen:
php bin/magento --version
Tatsächlich, da Magento 2 seinen Composer verwendet hat, müssen Sie dafür keinen PHP-Code schreiben. Stattdessen gibt es zwei Möglichkeiten, die Magento 2-Version zu finden:
Probieren Sie zunächst die Datei composer.json aus und suchen Sie nach dem Schlüsselwort version. Wenn Sie Terminal bevorzugen, können Sie etwas im Stammverzeichnis des Projekts hinzufügen.
composer licenses | grep Version:
Eine andere Möglichkeit, die Magento 2-Version zu überprüfen, ob es sich um eine Community- oder Enterprise-Edition handelt, ist die folgende
composer licenses | grep Name:
Verwenden Sie den Webdienst, um https://www.mageplaza.com/check-magento-version/ zu überprüfen.
Bitte probieren Sie dieses Tool online aus, es funktioniert für beide Versionen von magento1.x und magento2.x https://www.talktojobs.com/check-magento-version/
composer.json
enthält möglicherweise eine Versionsbeschränkung wie "^ 2.1", die nicht die genaue Version angibt. Daher überprüft Magento (auch) diecomposer.lock
Datei, um festzustellen, welche Version gerade installiert ist.