Bagaimana cara mendapatkan versi Magento di Magento2? (Setara Mage :: getVersion ())


23

Bagaimana cara mendapatkan versi Magento di Magento2.x (mis 2.0.0)?

Di Magento1.x, saya bisa melakukannya dengan

Mage::getVersion()

Jadi, apa yang setara di Magento2.x?

Jawaban:


20

Hingga Magento versi 2.0.7 nomor versi dipertahankan dalam AppInterface::VERSIONkonstanta.

Dengan dirilisnya Magento 2.1, konstanta dihapus.

Jadi hingga 2.0.7 jika Anda memeriksa file footer adminhtml di mana versi tersebut ditampilkan

Footer Panel Admin

Itu merujuk pada \Magento\Framework\AppInterface::VERSIONkonstanta.

Tetapi sejak Magento 2.1 merilis file footer sekarang menggunakan \Magento\Backend\Block\Page\Footer::getMagentoVersion()yang pada gilirannya memanggil \Magento\Framework\App\ProductMetadata::getVersion().

Sebelumnya ProductMetadata::getVersion()digunakan untuk mengembalikan nilai konstanta \Magento\Framework\AppInterface::VERSION, tetapi sekarang mem-parsing composer.jsonjuga composer.lockdan mengembalikan versi magento yang sesuai

Jadi, apa pun versi Anda pada 2.0.x atau 2.1.x, jika Anda menggunakan \Magento\Framework\App\ProductMetadata::getVersion()metode ini, Anda akan selalu mendapatkan versi Magento yang tepat.

Kesimpulan:

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.jsonmungkin mengandung batasan versi seperti "^ 2.1" yang tidak menunjukkan versi yang tepat, jadi Magento (juga) memeriksa composer.lockfile untuk melihat versi apa yang saat ini diinstal.
7ochem

@ 7ochem terima kasih atas informasinya, perbarui jawabannya juga :)
Atish Goswami

21

Anda dapat menggunakan ini dalam versi 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Untuk versi 2.1:

Cara 1, menggunakan DI:

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

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

Cara 2, menggunakan ObjectManager secara langsung:

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

Implementasi semacam itu dapat Anda temukan di app / code / Magento / Backend / view / adminhtml / templates / halaman / footer.phtml
Valery Statichnyi

1
CATATAN: ini TIDAK LAGI berfungsi untuk Magento 2.1+ (lihat jawaban lain!)
Manuel M

jawaban lain benar-benar berfungsi? Dalam kasus saya melalui laporan kesalahan. Lihat jawaban baru saya.
Sohel Rana


10

Solusi yang disebutkan tidak berlaku mulai dari Magento 2.1 ( \Magento\Framework\AppInterface::VERSIONkonstan dihapus)

Cara baru untuk mendapatkan versi adalah dengan mengambilnya dari Product Metadata Instance (membaca versi dari composer.json):

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

(lebih baik menyuntikkan Metadata Produk ke konstruktor sebagai \Magento\Framework\App\ProductMetadataInterface)


10

Di atas jawaban lain, Anda bisa mendapatkan versi utama (misalnya 2.1) dengan mengakses /magento_versionsitus web Magento 2 Anda.


Terima kasih telah menunjukkan ini. Sepertinya ini adalah kebocoran keamanan bagi saya: ini adalah cara yang bagus bagi peretas untuk menemukan situs Magento 2 yang rentan! Tentu saja, Anda sepertinya hanya bisa mendapatkan versi mayor dan minor dengan cara ini, tetapi sepertinya itu masih ide yang buruk.
toon81

trik "cepat & kotor" yang hebat, terima kasih!
maoizm

6

Jika seseorang harus menemukannya secara manual. Versi modul Magento dasar terletak di file komposer ini:

vendor/magento/magento2-base/composer.json

Juga seperti yang disarankan di atas, untuk membuat kode di bawah ini berfungsi:

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

\Magento\Framework\App\ProductMetadatasekarang membutuhkan instance ComposerJsonFinderuntuk dilewatkan pada saat instantiation.

Contoh yang saya temukan di 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);

Kode di atas adalah murni untuk tujuan informasi. Anda harus menggali lebih dalam untuk membuatnya berfungsi.


6

Anda dapat menjalankan perintah di bawah ini untuk mendapatkan versi magento:

php bin/magento --version

tampaknya ini tidak membedakan edisi Magento vs Komunitas - Enterprise
maoizm

4

Untuk pengguna seperti unix

Tidak perlu menulis kode PHP apa pun untuk ini. Karena Magento 2 menggunakan komposer, itu membuatnya lebih mudah. Anda dapat melakukan ini dengan dua cara:

Periksa composer.json dan cari kunci yang disebut versi. Jika Anda seperti saya yang suka menggunakan terminal, Anda dapat melakukan sesuatu seperti pada root proyek.

composer licenses | grep Version:

Ini mengembalikan versi M2 jika Anda ingin memeriksa apakah itu komunitas atau versi perusahaan kemudian lakukan hal berikut:

composer licenses | grep Name:

1

cukup periksa file composer.json pada root magento2, Anda akan menemukan teks seperti ini

"version": "2.1.2",

composer.jsonmungkin mengandung batasan versi seperti "^ 2.1" yang tidak menunjukkan versi yang tepat. Anda harus memeriksa composer.lockfile untuk melihat versi apa yang saat ini diinstal.
7ochem

1

Coba ini:

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

Untuk versi 2.1:

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


1

Berikut adalah beberapa cara untuk memeriksa versi Magento

Metode # 1: Gunakan pengecekan Kode PHP

Periksa versi Magento 1
Mage::getVersion() //will return the magento version
Periksa versi Magento 2

Anda dapat menggunakan ini dalam versi 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Untuk versi 2.1:

Cara pertama, menggunakan DI:

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

Cara kedua, menggunakan ObjectManager secara langsung:

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

Metode # 2: Periksa versi Magento melalui baris perintah

Anda dapat menjalankan perintah di bawah ini untuk mendapatkan versi Magento 2:

php bin/magento --version

Sebenarnya, karena Magento 2 telah menggunakan komposernya sehingga Anda tidak perlu menulis kode PHP apa pun untuk ini. Sebagai gantinya, ada dua opsi untuk menemukan versi Magento 2:

Pertama, silakan coba composer.json dan cari kata kunci versi. Jika Anda lebih suka menggunakan terminal, Anda dapat menambahkan sesuatu di root proyek.

composer licenses | grep Version:

Cara lain untuk memeriksa cuaca versi Magento 2 apakah itu edisi komunitas atau perusahaan, silakan tulis yang berikut ini

composer licenses | grep Name:

Gunakan layanan web untuk memeriksa https://www.mageplaza.com/check-magento-version/


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.