Come ottenere la versione di Magento in Magento2? (Equivalent of Mage :: getVersion ())


23

Come posso ottenere la versione di Magento in Magento2.x (ad es. 2.0.0)?

In Magento1.x, potrei farlo con

Mage::getVersion()

Quindi qual è l'equivalente in Magento2.x?

Risposte:


20

Fino a Magento versione 2.0.7 il numero di versione era mantenuto nella AppInterface::VERSIONcostante.

Con il rilascio di Magento 2.1 la costante è stata rimossa.

Quindi fino alla 2.0.7 se controlli il file piè di pagina adminhtml in cui viene mostrata la versione

Piè di pagina del pannello di amministrazione

Aveva riferimento alla \Magento\Framework\AppInterface::VERSIONcostante.

Ma dalla versione 2.1 di Magento il file footer ora utilizza il file\Magento\Backend\Block\Page\Footer::getMagentoVersion() che a sua volta chiama il file \Magento\Framework\App\ProductMetadata::getVersion().

In precedenza ProductMetadata::getVersion()veniva utilizzato per restituire il valore della costante \Magento\Framework\AppInterface::VERSION, ma ora analizza composer.jsonsia composer.lockla versione magento che quella restituita

Quindi, indipendentemente dalla versione in 2.0.xo 2.1.x, se usi il \Magento\Framework\App\ProductMetadata::getVersion()metodo, otterrai sempre la versione corretta di Magento.

Conclusione:

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.jsonpotrebbe contenere un vincolo di versione come "^ 2.1" che non indica la versione esatta, quindi Magento sta (anche) controllando il composer.lockfile per vedere quale versione esatta è attualmente installata.
7

@ 7ochem grazie per le informazioni, aggiornata anche la risposta :)
Atish Goswami

21

Puoi usarlo nelle versioni 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Per la versione 2.1:

Modo 1, usando DI:

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

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

Modo 2, utilizzando direttamente ObjectManager:

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

Tale implementazione è disponibile su app / code / Magento / Backend / view / adminhtml / templates / page / footer.phtml
Valery Statichnyi,

1
NOTA: questo non funziona più per Magento 2.1+ (vedi altre risposte!)
Manuel M

altra risposta funziona davvero? Nel mio caso tramite segnalazione errori. Vedi la mia nuova risposta
Sohel Rana


10

Le soluzioni citate non sono applicabili a partire da Magento 2.1 (la \Magento\Framework\AppInterface::VERSIONcostante è stata rimossa)

Il nuovo modo per ottenere la versione è recuperarlo dall'istanza di metadati del prodotto (legge la versione da composer.json):

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

(meglio iniettare metadati del prodotto nel costruttore come \Magento\Framework\App\ProductMetadataInterface)


10

Oltre alle altre risposte, puoi ottenere la versione principale (ad esempio 2.1) accedendo /magento_versional tuo sito Web Magento 2.


Grazie per averlo segnalato. Mi sembra una perdita di sicurezza: questo è un ottimo modo per gli hacker di trovare siti vulnerabili di Magento 2! Certo, sembra che tu riesca solo a ottenere la versione principale e secondaria in questo modo, ma sembra comunque una cattiva idea.
toon81,

ottimo trucco "veloce e sporco", grazie!
maoizm,

6

Nel caso in cui qualcuno debba trovarlo manualmente. La versione base del modulo Magento si trova in questo file del compositore:

vendor/magento/magento2-base/composer.json

Inoltre, come suggerito sopra, per far funzionare il codice qui sotto:

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

\Magento\Framework\App\ProductMetadata ora richiede istanza di ComposerJsonFinder essere passato al momento dell'istanza.

Un esempio che ho trovato 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);

Il codice sopra è puramente a scopo informativo. Devi scavare di più per farlo funzionare.


6

Puoi eseguire il comando seguente per ottenere la versione di magento:

php bin/magento --version

sembra che ciò non differenzi le edizioni Community vs Enterprise di Magento
maoizm,

4

Per utenti come unix

Non è necessario scrivere alcun codice PHP per questo. Poiché Magento 2 utilizza il compositore, rende tutto più semplice. Puoi farlo in due modi:

Controlla il composer.json e cerca una chiave chiamata versione. Se sei come me a cui piace usare il terminale, puoi fare qualcosa di simile alla radice del progetto.

composer licenses | grep Version:

Ciò restituisce la versione di M2 se si desidera verificare se si tratta di una versione di comunità o aziendale, quindi effettuare le seguenti operazioni:

composer licenses | grep Name:

1

controlla semplicemente il file composer.json sulla radice magento2, troverai un testo come questo

"version": "2.1.2",

composer.jsonpotrebbe contenere un vincolo di versione come "^ 2.1" che non indica la versione esatta. Dovresti controllare il composer.lockfile per vedere quale versione esatta è attualmente installata.
7

1

Prova questo:

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

Per la versione 2.1:

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


1

Ecco alcuni modi per verificare la versione di Magento

Metodo n. 1: utilizzare il controllo del codice PHP

Controlla la versione di Magento 1
Mage::getVersion() //will return the magento version
Controlla la versione di Magento 2

Puoi usarlo nelle versioni 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Per la versione 2.1:

Il primo modo, usando DI:

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

Il secondo modo, usando direttamente ObjectManager:

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

Metodo n. 2: verifica la versione di Magento tramite riga di comando

È possibile eseguire il comando seguente per ottenere la versione di Magento 2:

php bin/magento --version

In realtà, dal momento che Magento 2 ha utilizzato il suo compositore in modo da non dover scrivere alcun codice PHP per questo. Invece, ci sono due opzioni per trovare la versione di Magento 2:

Innanzitutto, prova composer.json e cerca la parola chiave version. Se preferisci usare il terminale, puoi aggiungere qualcosa alla radice del progetto.

composer licenses | grep Version:

Un altro modo per verificare la versione di Magento 2 è la community o la versione enterprise, scrivere quanto segue

composer licenses | grep Name:

Utilizzare il servizio Web per controllare https://www.mageplaza.com/check-magento-version/


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.