Magento2'deki Magento versiyonu nasıl elde edilir? (Büyücünün eşdeğeri :: getVersion ())


23

Magento2.x'deki Magento sürümünü nasıl edinebilirim (örn. 2.0.0)?

Magento1.x'de bunu yapabilirim

Mage::getVersion()

Peki Magento2.x’deki eşdeğeri nedir?

Yanıtlar:


20

Magento sürüm 2.0.7'ye kadar sürüm numarası AppInterface::VERSIONsabit tutuldu .

Magento 2.1'in serbest bırakılmasıyla sabit kaldırıldı.

Bu yüzden sürümün gösterildiği adminhtml altbilgi dosyasını kontrol ederseniz 2.0.7'ye kadar

Yönetici Paneli Altbilgisi

Sabitine atıfta bulundu \Magento\Framework\AppInterface::VERSION.

Ancak Magento 2.1 sürümünden bu yana, altbilgi dosyası şimdi \Magento\Backend\Block\Page\Footer::getMagentoVersion()sırayla çağrıları kullanır \Magento\Framework\App\ProductMetadata::getVersion().

Önceden ProductMetadata::getVersion()sabitin değerini döndürmek için kullanılır \Magento\Framework\AppInterface::VERSION, ancak şimdi composer.jsonhem de hem ayrıştırır hem de composer.lockuygun magento versiyonunu döndürür

Yani hangi versiyonda olursanız olun 2.0.x veya 2.1.x'te, eğer \Magento\Framework\App\ProductMetadata::getVersion()yöntemi kullanırsanız, her zaman uygun Magento versiyonunu elde edersiniz.

Sonuç:

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.jsonTam sürümü göstermeyen "^ 2.1" gibi bir sürüm kısıtlaması içerebilir, bu nedenle Magento composer.lockşu anda hangi tam sürümün yüklü olduğunu görmek için dosyayı kontrol eder .
18:18

@ 7ochem bilgi için teşekkürler, cevabı da güncelledi :)
Atish Goswami

21

Bunu 2.0.x sürümlerinde kullanabilirsiniz:

echo \Magento\Framework\AppInterface::VERSION;

2.1 sürümü için:

Yol 1, DI kullanarak:

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

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

Way 2, doğrudan ObjectManager'ı kullanarak:

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

Böyle bir uygulama bulabilirsiniz app / code / Magento / Backend / view / adminhtml / templates / page / footer.phtml
Valery Statichnyi

1
NOT: bu Magento 2.1+ için HİÇBİR ÇALIŞMIYOR (diğer cevaplara bakınız!)
Manuel M

diğer cevap gerçekten işe yarıyor mu? Benim durumumda hata raporu aracılığıyla. Yeni cevabımı gör.
Sohel Rana


10

Bahsedilen çözümler Magento 2.1'den itibaren uygulanamaz ( \Magento\Framework\AppInterface::VERSIONsabit kaldırıldı)

Sürümü elde etmenin yeni yolu, Ürün Meta Verileri Örneği'nden almaktır (composer.json'dan sürümü okur):

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

(Ürün Meta Verilerini kurucuya enjekte etmek daha iyi \Magento\Framework\App\ProductMetadataInterface)


10

Diğer cevapların üstünde, Magento 2 web sitenize erişerek ana versiyonu (örneğin 2.1) alabilirsiniz ./magento_version


Bunu gösterdiğin için teşekkürler. Bana bir güvenlik sızıntısı gibi geliyor: Bu hackerların savunmasız Magento 2 siteleri bulması için harika bir yol! Tabii ki, sadece bu şekilde büyük ve küçük versiyonu almak mümkün gibi görünüyor, ama yine de kötü bir fikir gibi görünüyor.
toon81

harika "hızlı ve kirli" numarası, teşekkürler!
maoizm

6

Birisinin manuel olarak bulması gerekmesi durumunda. Temel Magento modül versiyonu bu besteci dosyasında bulunur:

vendor/magento/magento2-base/composer.json

Ayrıca yukarıda da belirtildiği gibi, aşağıdaki kod çalışmasını yapmak için:

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

\Magento\Framework\App\ProductMetadataŞimdi ComposerJsonFinderörnekleme anında geçirilecek örneği gerektirir .

Bulduğum bir örnek 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);

Yukarıdaki kod yalnızca bilgilendirme amaçlıdır. Çalışması için daha fazla kazmanız gerekir.


6

Magento sürümünü almak için aşağıdaki komutu çalıştırabilirsiniz:

php bin/magento --version

Bu, Magento'nun Topluluk ve Kurumsal baskılarını farklılaştırmıyor gibi görünüyor
maoizm,

4

Unix benzeri kullanıcılar için

Bunun için herhangi bir PHP kodu yazmaya gerek yok. Magento 2 besteciyi kullandığı için hepsini kolaylaştırır. Bunu iki yolla yapabilirsiniz:

Composer.json dosyasını kontrol edin ve sürüm olarak adlandırılan bir anahtar arayın. Terminali kullanmayı seven benim gibiyseniz, projenin kökü gibi bir şey yapabilirsiniz.

composer licenses | grep Version:

Bu, topluluk veya kurumsal sürüm olup olmadığını kontrol etmek istiyorsanız M2'nin sürümünü döndürür, ardından aşağıdakileri yapın:

composer licenses | grep Name:

1

magento2 kökündeki composer.json dosyasını kontrol etmeniz yeterlidir, böyle bir metin bulacaksınız

"version": "2.1.2",

composer.jsonTam sürümü göstermeyen "^ 2.1" gibi bir sürüm kısıtlaması içerebilir. composer.lockTam olarak hangi sürümün yüklü olduğunu görmek için dosyayı kontrol etmelisiniz .
18:18

1

Bunu dene:

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

2.1 sürümü için:

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


1

Magento versiyonunu kontrol etmenin bazı yolları

Yöntem 1: PHP Kod denetimi kullan

Magento 1 sürümünü kontrol edin
Mage::getVersion() //will return the magento version
Magento 2 versiyonunu kontrol edin

Bunu 2.0.x sürümlerinde kullanabilirsiniz:

echo \Magento\Framework\AppInterface::VERSION;

2.1 sürümü için:

DI kullanarak ilk yol:

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

Doğrudan ObjectManager kullanarak ikinci yol:

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

Yöntem # 2: Magento versiyonunu komut satırı üzerinden kontrol edin

Magento 2 sürümünü edinmek için aşağıdaki komutu çalıştırabilirsiniz:

php bin/magento --version

Aslında, Magento 2 bestecisini kullandığından, bunun için PHP kodu yazmanıza gerek kalmaz. Bunun yerine, Magento 2 sürümünü bulmak için iki seçenek vardır:

Öncelikle, lütfen composer.json'u deneyin ve sürüm anahtar kelimesini arayın. Terminali kullanmayı tercih ederseniz, projenin kök dizinine bir şey ekleyebilirsiniz.

composer licenses | grep Version:

Magento 2 versiyonunun hava durumunu kontrol etmenin başka bir yolu topluluk veya işletme baskısıdır, lütfen aşağıdakileri

composer licenses | grep Name:

Https://www.mageplaza.com/check-magento-version/ adresini kontrol etmek için web servisini kullanın.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.