Jak zdobyć wersję Magento w Magento2? (Odpowiednik Mage :: getVersion ())


Odpowiedzi:


20

Aż do wersji Magento 2.0.7 numer wersji był utrzymywany na AppInterface::VERSIONstałym poziomie.

Wraz z wydaniem Magento 2.1 stała została usunięta.

Tak więc do 2.0.7, jeśli zaznaczysz plik stopki adminhtml, w którym wyświetlana jest wersja

Stopka panelu administracyjnego

Miał odniesienie do \Magento\Framework\AppInterface::VERSIONstałej.

Ale od wydania Magento 2.1 plik stopki używa teraz tego, \Magento\Backend\Block\Page\Footer::getMagentoVersion()co z kolei wywołuje \Magento\Framework\App\ProductMetadata::getVersion().

Wcześniej ProductMetadata::getVersion()służyło do zwracania wartości stałej \Magento\Framework\AppInterface::VERSION, ale teraz analizuje composer.jsonzarówno, jak composer.locki zwraca odpowiednią wersję magento

Tak więc bez względu na to, którą wersję korzystasz z wersji 2.0.x lub 2.1.x, jeśli użyjesz tej \Magento\Framework\App\ProductMetadata::getVersion()metody, zawsze otrzymasz odpowiednią wersję Magento.

Wniosek:

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.jsonmoże zawierać ograniczenie wersji, takie jak „^ 2.1”, które nie wskazuje dokładnej wersji, więc Magento (także) sprawdza composer.lockplik, aby zobaczyć, która wersja jest aktualnie zainstalowana.
7ochem

@ 7ochem dziękuję za informację, zaktualizowałem również odpowiedź :)
Atish Goswami

21

Możesz użyć tego w wersjach 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Dla wersji 2.1:

Sposób 1, przy użyciu DI:

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

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

Sposób 2, używając bezpośrednio ObjectManager:

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

Taką implementację można znaleźć w app / code / Magento / Backend / view / adminhtml / templates / page / footer.phtml
Valery Statichnyi 12.01.16

1
UWAGA: to NIE JUŻ DZIAŁA w Magento 2.1+ (zobacz inne odpowiedzi!)
Manuel M

inna odpowiedź faktycznie działa? W moim przypadku poprzez raport o błędach. Zobacz moją nową odpowiedź.
Sohel Rana,


10

Wspomniane rozwiązania nie mają zastosowania, począwszy od Magento 2.1 ( \Magento\Framework\AppInterface::VERSIONstała została usunięta)

Nowym sposobem uzyskania wersji jest pobranie jej z wystąpienia metadanych produktu (odczytuje wersję z pliku composer.json):

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

(lepiej wstrzyknąć metadane produktu do konstruktora jako \Magento\Framework\App\ProductMetadataInterface)


10

Oprócz innych odpowiedzi możesz uzyskać wersję główną (na przykład 2.1), odwiedzając /magento_versionwitrynę Magento 2.


Dzięki za zwrócenie na to uwagi. Wydaje mi się, że to przeciek bezpieczeństwa: jest to świetny sposób dla hakerów na znalezienie wrażliwych stron Magento 2! Oczywiście wydaje się, że można uzyskać w ten sposób główną i mniejszą wersję, ale nadal wydaje się to złym pomysłem.
toon81

świetna sztuczka „szybka i brudna”, dzięki!
maoizm

6

Na wypadek, gdyby ktoś musiał go znaleźć ręcznie. Podstawowa wersja modułu Magento znajduje się w tym pliku kompozytora:

vendor/magento/magento2-base/composer.json

Również jak sugerowano powyżej, aby poniższy kod działał:

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

\Magento\Framework\App\ProductMetadatateraz wymaga ComposerJsonFinderprzekazania instancji w momencie tworzenia instancji.

Przykład, który znalazłem w 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);

Powyższy kod służy wyłącznie celom informacyjnym. Musisz kopać więcej, aby działało.


6

Możesz uruchomić poniższe polecenie, aby uzyskać wersję magento:

php bin/magento --version

wydaje się, że to nie różnicuje wersji Magento Community vs. Enterprise
maoizm

4

Dla użytkowników takich jak Unix

W tym celu nie trzeba pisać kodu PHP. Ponieważ Magento 2 wykorzystuje kompozytora, wszystko staje się łatwiejsze. Możesz to zrobić na dwa sposoby:

Sprawdź plik composer.json i poszukaj klucza o nazwie wersja. Jeśli jesteś podobny do mnie, który lubi korzystać z terminala, możesz zrobić coś takiego jak w katalogu głównym projektu.

composer licenses | grep Version:

Zwraca wersję M2, jeśli chcesz sprawdzić, czy jest to wersja społecznościowa czy korporacyjna, wykonaj następujące czynności:

composer licenses | grep Name:

1

po prostu sprawdź plik composer.json w katalogu głównym magento2, znajdziesz taki tekst

"version": "2.1.2",

composer.jsonmoże zawierać ograniczenie wersji, takie jak „^ 2.1”, które nie wskazuje dokładnej wersji. Powinieneś sprawdzić composer.lockplik, aby zobaczyć, jaka dokładnie wersja jest aktualnie zainstalowana.
7ochem


1

Oto kilka sposobów sprawdzenia wersji Magento

Metoda nr 1: Użyj sprawdzania kodu PHP

Sprawdź wersję Magento 1
Mage::getVersion() //will return the magento version
Sprawdź wersję Magento 2

Możesz użyć tego w wersjach 2.0.x:

echo \Magento\Framework\AppInterface::VERSION;

Dla wersji 2.1:

Pierwszy sposób przy użyciu DI:

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

Drugi sposób, używając bezpośrednio ObjectManager:

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

Metoda nr 2: Sprawdź wersję Magento za pomocą wiersza poleceń

Możesz uruchomić poniższe polecenie, aby uzyskać wersję Magento 2:

php bin/magento --version

Właściwie odkąd Magento 2 wykorzystało swojego kompozytora, więc nie trzeba do tego pisać kodu PHP. Zamiast tego istnieją dwie opcje znalezienia wersji Magento 2:

Najpierw wypróbuj composer.json i poszukaj słowa kluczowego wersji. Jeśli wolisz używać terminala, możesz dodać coś w katalogu głównym projektu.

composer licenses | grep Version:

Innym sposobem sprawdzenia pogody w wersji Magento 2 jest wersja społecznościowa lub korporacyjna, napisz następujące

composer licenses | grep Name:

Skorzystaj z usługi internetowej, aby sprawdzić https://www.mageplaza.com/check-magento-version/


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.