Ответы:
Вплоть до версии 2.0.7 Magento номер версии оставался AppInterface::VERSION
постоянным.
С выпуском Magento 2.1 константа была удалена.
Так что до 2.0.7, если вы проверите файл нижнего колонтитула adminhtml, где отображается версия
Он имел ссылку на \Magento\Framework\AppInterface::VERSION
константу.
Но после выпуска Magento 2.1 файл нижнего колонтитула теперь использует тот, \Magento\Backend\Block\Page\Footer::getMagentoVersion()
который в свою очередь вызывает \Magento\Framework\App\ProductMetadata::getVersion()
.
Ранее ProductMetadata::getVersion()
использовался для возврата значения константы \Magento\Framework\AppInterface::VERSION
, но теперь он анализирует, composer.json
а также composer.lock
возвращает соответствующую версию magento
Поэтому, независимо от того, какая у вас версия на 2.0.x или 2.1.x, если вы используете \Magento\Framework\App\ProductMetadata::getVersion()
метод, вы всегда получите правильную версию Magento.
Вывод:
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
Вы можете использовать это в версиях 2.0.x:
echo \Magento\Framework\AppInterface::VERSION;
Для версии 2.1:
Способ 1, используя DI:
public function __construct(
\Magento\Framework\App\ProductMetadataInterface $productMetadata
) {
$this->productMetadata = $productMetadata;
}
public function getMagentoVersion()
{
return $this->productMetadata->getVersion();
}
Способ 2, используя ObjectManager напрямую:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();
Упомянутые решения не применимы, начиная с Magento 2.1 ( \Magento\Framework\AppInterface::VERSION
постоянная была удалена)
Новый способ получить версию - извлечь ее из экземпляра метаданных продукта (читает версию из composer.json):
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
(лучше добавить метаданные продукта в конструктор как \Magento\Framework\App\ProductMetadataInterface
)
Помимо других ответов, вы можете получить основную версию (например, 2.1), зайдя /magento_version
на ваш сайт Magento 2.
В случае, если кто-то должен найти его вручную. Базовая версия модуля Magento находится в этом файле композитора:
vendor/magento/magento2-base/composer.json
Также, как предложено выше, чтобы заставить работать код ниже:
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
\Magento\Framework\App\ProductMetadata
теперь требует, чтобы экземпляр ComposerJsonFinder
был передан во время создания экземпляра.
Пример, который я нашел в 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);
Вышеприведенный код предназначен исключительно для информационных целей. Вы должны копать больше, чтобы это работало.
Вы можете запустить команду ниже, чтобы получить версию magento:
php bin/magento --version
Для пользователей Unix, таких как
Нет необходимости писать какой-либо код PHP для этого. Поскольку в Magento 2 используется композитор, все становится проще. Вы можете сделать это двумя способами:
Проверьте composer.json и найдите ключ с именем version. Если вы похожи на меня, кто любит использовать терминал, вы можете сделать что-то вроде в корне проекта.
composer licenses | grep Version:
Возвращает версию M2, если вы хотите проверить версию сообщества или предприятия, а затем просто выполните следующее:
composer licenses | grep Name:
просто проверьте файл composer.json в корне magento2, вы найдете такой текст
"version": "2.1.2",
composer.json
может содержать ограничение версии, например «^ 2.1», которое не указывает точную версию. Вы должны проверить composer.lock
файл, чтобы увидеть, какая именно версия установлена в данный момент.
Попробуй это:
<?php echo __('Magento'); ?>
<?php echo __('ver. %1', \Magento\Framework\AppInterface::VERSION) ?>
Для версии 2.1:
<?php
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
?>
<?php echo __('ver. %1', $version) ?>
Вот несколько способов проверить версию Magento
Mage::getVersion() //will return the magento version
Проверьте версию Magento 2
Вы можете использовать это в версиях 2.0.x:
echo \Magento\Framework\AppInterface::VERSION;
Для версии 2.1:
Первый способ, используя DI:
public function __construct( \Magento\Framework\App\ProductMetadataInterface $productMetadata ) {
$this->productMetadata = $productMetadata;
}
public function getMagentoVersion() {
return $this->productMetadata->getVersion();
}
Второй способ, используя ObjectManager напрямую:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();
Вы можете запустить следующую команду, чтобы получить версию Magento 2:
php bin/magento --version
На самом деле, так как Magento 2 использовал свой композитор, так что вам не нужно писать какой-либо код PHP для этого. Вместо этого есть две возможности найти версию Magento 2:
Во-первых, пожалуйста, попробуйте composer.json и найдите ключевое слово version. Если вы предпочитаете использовать терминал, вы можете добавить что-то в корень проекта.
composer licenses | grep Version:
Еще один способ проверить версию Magento 2, если это общедоступная или корпоративная версия, напишите следующее
composer licenses | grep Name:
Используйте веб-сервис для проверки https://www.mageplaza.com/check-magento-version/
Пожалуйста, попробуйте этот инструмент онлайн, он работает для обеих версий magento1.x и magento2.x https://www.talktojobs.com/check-magento-version/
composer.json
может содержать ограничение версии, например «^ 2.1», которое не указывает точную версию, поэтому Magento (также) проверяетcomposer.lock
файл, чтобы увидеть, какая именно версия установлена в данный момент.