Wie bekomme ich die Magento-Version in Magento2? (Entspricht Mage :: getVersion ())

23

Wie bekomme ich die Magento-Version in Magento2.x (zB 2.0.0)?

In Magento1.x könnte ich es mit machen

Mage::getVersion()

Was ist das Äquivalent in Magento2.x?

Manuel M
quelle

Antworten:

20

Bis zur Magento-Version 2.0.7 wurde die Versionsnummer AppInterface::VERSIONkonstant 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

Admin Panel Footer

Es bezog sich auf die \Magento\Framework\AppInterface::VERSIONKonstante.

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.jsonsowie aus composer.lockund 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
Atish Goswami
quelle
composer.jsonenthält möglicherweise eine Versionsbeschränkung wie "^ 2.1", die nicht die genaue Version angibt. Daher überprüft Magento (auch) die composer.lockDatei, um festzustellen, welche Version gerade installiert ist.
Chem.
@ 7ochem danke für die Informationen, aktualisiert die Antwort auch :)
Atish Goswami
21

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();
Sohel Rana
quelle
Eine solche Implementierung finden Sie unter app / code / Magento / Backend / view / adminhtml / templates / page / footer.phtml
Valery Statichnyi
1
HINWEIS: Dies funktioniert NICHT MEHR für Magento 2.1+ (siehe andere Antworten!)
Manuel M
andere Antwort tatsächlich funktionieren? In meinem Fall durch Fehlermeldung. Siehe meine neue Antwort.
Sohel Rana
10

Erwähnte Lösungen sind ab Magento 2.1 nicht mehr anwendbar ( \Magento\Framework\AppInterface::VERSIONKonstante 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)

Sergii Ivashchenko
quelle
10

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.

Raphael bei Digital Pianism
quelle
Vielen Dank für den Hinweis. Scheint für mich ein Sicherheitsleck zu sein: Dies ist eine großartige Möglichkeit für Hacker, anfällige Magento 2-Sites zu finden! Natürlich scheinen Sie nur in der Lage zu sein, die Dur- und Moll-Version auf diese Weise zu erhalten, aber es scheint immer noch eine schlechte Idee zu sein.
Toon81
toller "quick & dirty" trick, danke!
Maoizm
6

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\ProductMetadataErfordert nun, dass die Instanz von ComposerJsonFinderzum 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.

div
quelle
6

Sie können den folgenden Befehl ausführen, um die Magento-Version zu erhalten:

php bin/magento --version
Sarjan Gautam
quelle
es scheint , dass diese Differenzierung nicht Gemeinschaft vs. Enterprise Edition von Magento
maoizm
4

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:
André Ferraz
quelle
1

Überprüfen Sie einfach die Datei composer.json im Stammverzeichnis von magento2. Sie finden einen Text wie diesen

"version": "2.1.2",
Ansyori
quelle
composer.jsonenthält möglicherweise eine Versionsbeschränkung wie "^ 2.1", die nicht die genaue Version angibt. Sie sollten die composer.lockDatei überprüfen, um festzustellen, welche Version aktuell installiert ist.
Chem.
1

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) ?>
Abdul
quelle
Funktioniert nur für 2.0.x, siehe: magento.stackexchange.com/a/96865/13642
Jeroen Vermeulen - MageHost
1

Hier sind einige Möglichkeiten, die Magento-Version zu überprüfen

Methode 1: Verwenden Sie die PHP-Code-Prüfung

Überprüfen Sie die Magento 1-Version
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();

Methode 2: Überprüfen Sie die Magento-Version über die Befehlszeile

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.

Sag die Wahrheit
quelle