Comment obtenir la version de Magento dans Magento2? (Équivalent de Mage :: getVersion ())


23

Comment obtenir la version de Magento dans Magento2.x (par exemple 2.0.0)?

Dans Magento1.x, je pouvais le faire avec

Mage::getVersion()

Alors, quel est l'équivalent dans Magento2.x?

Réponses:


20

Jusqu'à la version 2.0.7 de Magento, le numéro de version était maintenu dans la AppInterface::VERSIONconstante.

Avec la sortie de Magento 2.1, la constante a été supprimée.

Donc, jusqu'à 2.0.7 si vous vérifiez le fichier de pied de page adminhtml où la version est affichée

Pied de page du panneau d'administration

Il faisait référence à la \Magento\Framework\AppInterface::VERSIONconstante.

Mais depuis la sortie de Magento 2.1, le fichier de pied de page utilise désormais le \Magento\Backend\Block\Page\Footer::getMagentoVersion()qui, à son tour, appelle le \Magento\Framework\App\ProductMetadata::getVersion().

Auparavant ProductMetadata::getVersion()utilisé pour renvoyer la valeur de la constante \Magento\Framework\AppInterface::VERSION, mais maintenant il analyse composer.jsonaussi bien que composer.locket retourne la version appropriée de magento

Quelle que soit la version sur laquelle vous vous trouvez, soit 2.0.x ou 2.1.x, si vous utilisez la \Magento\Framework\App\ProductMetadata::getVersion()méthode, vous obtiendrez toujours la bonne version de Magento.

Conclusion:

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

composer.jsonpeut contenir une contrainte de version comme "^ 2.1" qui n'indique pas la version exacte, donc Magento vérifie (également) le composer.lockfichier pour voir quelle version exacte est actuellement installée.
7ochem

@ 7ochem merci pour l'information, a également mis à jour la réponse :)
Atish Goswami

21

Vous pouvez l'utiliser dans les versions 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Pour la version 2.1:

Voie 1, en utilisant DI:

public function __construct(
        \Magento\Framework\App\ProductMetadataInterface $productMetadata
) {
    $this->productMetadata = $productMetadata;
}

public function getMagentoVersion()
{
    return $this->productMetadata->getVersion();
}

Méthode 2, en utilisant directement ObjectManager:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();

Une telle implémentation que vous pouvez trouver sur app / code / Magento / Backend / view / adminhtml / templates / page / footer.phtml
Valery Statichnyi

1
REMARQUE: cela ne fonctionne PLUS pour Magento 2.1+ (voir les autres réponses!)
Manuel M

autre réponse fonctionne vraiment? Dans mon cas, grâce au rapport d'erreur. Voir ma nouvelle réponse.
Sohel Rana


10

Les solutions mentionnées ne sont pas applicables à partir de Magento 2.1 (la \Magento\Framework\AppInterface::VERSIONconstante a été supprimée)

La nouvelle façon d'obtenir la version est de la récupérer à partir de l'instance de métadonnées du produit (lit la version de composer.json):

$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();

(il vaut mieux injecter les métadonnées du produit au constructeur en tant que \Magento\Framework\App\ProductMetadataInterface)


10

En plus des autres réponses, vous pouvez obtenir la version principale (par exemple 2.1) en accédant /magento_versionà votre site Web Magento 2.


Merci de l'avoir signalé. Cela me semble être une fuite de sécurité: c'est un excellent moyen pour les pirates de trouver des sites Magento 2 vulnérables! Bien sûr, vous ne semblez pouvoir obtenir que les versions majeure et mineure de cette façon, mais cela semble toujours être une mauvaise idée.
toon81

super astuce "rapide et sale", merci!
maoizm

6

Si quelqu'un doit le trouver manuellement. La version de base du module Magento se trouve dans ce fichier compositeur:

vendor/magento/magento2-base/composer.json

Aussi comme suggéré ci-dessus, pour faire fonctionner le code ci-dessous:

$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();

\Magento\Framework\App\ProductMetadatarequiert maintenant que l'instance de ComposerJsonFindersoit passée au moment de l'instanciation.

Un exemple que j'ai trouvé dans 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);

Le code ci-dessus est purement informatif. Vous devez creuser davantage pour que cela fonctionne.


6

Vous pouvez exécuter la commande ci-dessous pour obtenir la version de magento:

php bin/magento --version

il semble que cela ne différencie pas les éditions Community et Enterprise de Magento
maoizm

4

Pour les utilisateurs comme Unix

Pas besoin d'écrire de code PHP pour cela. Parce que Magento 2 utilise le compositeur, il est plus facile. Vous pouvez procéder de deux manières:

Vérifiez le composer.json et recherchez une clé appelée version. Si vous êtes comme moi qui aime utiliser le terminal, vous pouvez faire quelque chose comme à la racine du projet.

composer licenses | grep Version:

Cela renvoie la version du M2 si vous souhaitez vérifier s'il s'agit d'une version communautaire ou d'entreprise, puis procédez comme suit:

composer licenses | grep Name:

1

vérifiez simplement le fichier composer.json à la racine de magento2, vous trouverez du texte comme celui-ci

"version": "2.1.2",

composer.jsonpeut contenir une contrainte de version comme "^ 2.1" qui n'indique pas la version exacte. Vous devriez vérifier le composer.lockfichier pour voir quelle version exacte est actuellement installée.
7ochem

1

Essaye ça:

<?php echo __('Magento'); ?>
<?php  echo __('ver. %1', \Magento\Framework\AppInterface::VERSION) ?>

Pour la version 2.1:

<?php
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
?>
<?php  echo __('ver. %1', $version) ?>


1

Voici quelques façons de vérifier la version de Magento

Méthode n ° 1: utilisez la vérification du code PHP

Vérifier la version de Magento 1
Mage::getVersion() //will return the magento version
Vérifier la version de Magento 2

Vous pouvez l'utiliser dans les versions 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Pour la version 2.1:

La première façon, en utilisant DI:

public function __construct( \Magento\Framework\App\ProductMetadataInterface $productMetadata ) { 
    $this->productMetadata = $productMetadata; 
} 
public function getMagentoVersion() { 
    return $this->productMetadata->getVersion(); 
}

La deuxième façon, en utilisant directement ObjectManager:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface'); 
echo $productMetadata->getVersion();

Méthode n ° 2: vérifier la version de Magento via la ligne de commande

Vous pouvez exécuter la commande ci-dessous pour obtenir la version de Magento 2:

php bin/magento --version

En fait, puisque Magento 2 a utilisé son compositeur pour que vous n'ayez pas besoin d'écrire de code PHP pour cela. Au lieu de cela, il existe deux options pour trouver la version de Magento 2:

Tout d'abord, essayez le composer.json et recherchez le mot-clé version. Si vous préférez utiliser le terminal, vous pouvez ajouter quelque chose à la racine du projet.

composer licenses | grep Version:

Une autre façon de vérifier la météo de la version de Magento 2 est l'édition communautaire ou d'entreprise, veuillez écrire ce qui suit

composer licenses | grep Name:

Utilisez le service Web pour vérifier https://www.mageplaza.com/check-magento-version/


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.