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.