Câu trả lời:
Cho đến khi Magento phiên bản 2.0.7, số phiên bản được duy trì AppInterface::VERSION
không đổi.
Với việc phát hành Magento 2.1, hằng số đã bị xóa.
Vì vậy, cho đến 2.0.7 nếu bạn kiểm tra tệp chân trang adminhtml nơi phiên bản được hiển thị
Nó có tham chiếu đến \Magento\Framework\AppInterface::VERSION
hằng số.
Nhưng kể từ khi Magento 2.1 phát hành, tập tin chân trang hiện sử dụng cái \Magento\Backend\Block\Page\Footer::getMagentoVersion()
mà lần lượt gọi là \Magento\Framework\App\ProductMetadata::getVersion()
.
Trước đây ProductMetadata::getVersion()
được sử dụng để trả về giá trị của hằng \Magento\Framework\AppInterface::VERSION
, nhưng bây giờ nó phân tích cú pháp composer.json
cũng như composer.lock
và trả về phiên bản magento thích hợp
Vì vậy, bất kể bạn đang ở phiên bản nào trên 2.0.x hoặc 2.1.x, nếu bạn sử dụng \Magento\Framework\App\ProductMetadata::getVersion()
phương thức này, bạn sẽ luôn có được phiên bản Magento phù hợp.
Phần kết luận:
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
Bạn có thể sử dụng điều này trong các phiên bản 2.0.x:
echo \Magento\Framework\AppInterface::VERSION;
Đối với phiên bản 2.1:
Cách 1, sử dụng DI:
public function __construct(
\Magento\Framework\App\ProductMetadataInterface $productMetadata
) {
$this->productMetadata = $productMetadata;
}
public function getMagentoVersion()
{
return $this->productMetadata->getVersion();
}
Cách 2, sử dụng ObjectManager trực tiếp:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();
Các giải pháp được đề cập không được áp dụng bắt đầu từ Magento 2.1 ( \Magento\Framework\AppInterface::VERSION
hằng số đã bị xóa)
Cách mới để có phiên bản là truy xuất phiên bản từ Trường hợp siêu dữ liệu sản phẩm (đọc phiên bản từ composer.json):
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
(tốt hơn để tiêm Siêu dữ liệu sản phẩm cho nhà xây dựng như \Magento\Framework\App\ProductMetadataInterface
)
Ngoài các câu trả lời khác, bạn có thể có phiên bản chính (ví dụ 2.1) bằng cách truy cập /magento_version
vào trang web Magento 2 của bạn.
Trong trường hợp ai đó phải tìm nó bằng tay. Phiên bản mô-đun Magento cơ sở nằm trong tệp soạn thảo này:
vendor/magento/magento2-base/composer.json
Cũng như đề xuất ở trên, để làm cho mã dưới đây hoạt động:
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
\Magento\Framework\App\ProductMetadata
bây giờ yêu cầu thể hiện ComposerJsonFinder
được thông qua tại thời điểm khởi tạo.
Một ví dụ tôi tìm thấy trong 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);
Mã trên hoàn toàn cho mục đích thông tin. Bạn phải đào sâu hơn để làm cho nó hoạt động.
Bạn có thể chạy lệnh bên dưới để có phiên bản magento:
php bin/magento --version
Đối với người dùng unix như người dùng
Không cần phải viết bất kỳ mã PHP nào cho việc này. Bởi vì Magento 2 sử dụng trình soạn thảo, nó làm cho tất cả dễ dàng hơn. Bạn có thể làm điều này theo hai cách:
Kiểm tra composer.json và tìm khóa được gọi là phiên bản. Nếu bạn giống tôi, người thích sử dụng thiết bị đầu cuối, bạn có thể làm một cái gì đó giống như trên thư mục gốc của dự án.
composer licenses | grep Version:
Điều này trả về phiên bản của M2 nếu bạn muốn kiểm tra cộng đồng hoặc phiên bản doanh nghiệp, sau đó chỉ cần làm như sau:
composer licenses | grep Name:
chỉ cần kiểm tra tệp composer.json trên root magento2, bạn sẽ tìm thấy văn bản như thế này
"version": "2.1.2",
composer.json
có thể chứa một ràng buộc phiên bản như "^ 2.1" không chỉ ra phiên bản chính xác. Bạn nên kiểm tra composer.lock
tệp để xem phiên bản chính xác nào hiện đang được cài đặt.
Thử đi:
<?php echo __('Magento'); ?>
<?php echo __('ver. %1', \Magento\Framework\AppInterface::VERSION) ?>
Đối với phiên bản 2.1:
<?php
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
?>
<?php echo __('ver. %1', $version) ?>
Dưới đây là một số cách để kiểm tra phiên bản Magento
Mage::getVersion() //will return the magento version
Kiểm tra phiên bản Magento 2
Bạn có thể sử dụng điều này trong các phiên bản 2.0.x:
echo \Magento\Framework\AppInterface::VERSION;
Đối với phiên bản 2.1:
Cách đầu tiên, sử dụng DI:
public function __construct( \Magento\Framework\App\ProductMetadataInterface $productMetadata ) {
$this->productMetadata = $productMetadata;
}
public function getMagentoVersion() {
return $this->productMetadata->getVersion();
}
Cách thứ hai, sử dụng ObjectManager trực tiếp:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productMetadata = $objectManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $productMetadata->getVersion();
Bạn có thể chạy lệnh dưới đây để có phiên bản Magento 2:
php bin/magento --version
Trên thực tế, vì Magento 2 đã sử dụng trình soạn thảo của nó để bạn không cần phải viết bất kỳ mã PHP nào cho việc này. Thay vào đó, có hai tùy chọn để tìm phiên bản Magento 2:
Trước tiên, vui lòng thử composer.json và tìm từ khóa phiên bản. Nếu bạn thích sử dụng terminal, bạn có thể thêm một cái gì đó vào thư mục gốc của dự án.
composer licenses | grep Version:
Một cách khác để kiểm tra thời tiết Magento 2 là phiên bản cộng đồng hoặc doanh nghiệp, vui lòng viết như sau
composer licenses | grep Name:
Sử dụng dịch vụ web để kiểm tra https://www.mageplaza.com/check-magento-version/
Xin hãy thử công cụ này trực tuyến, nó hoạt động cho cả hai phiên bản magento1.x và magento2.x https://www.talktojobs.com/check-magento-version/
composer.json
có thể chứa một ràng buộc phiên bản như "^ 2.1" không chỉ ra phiên bản chính xác, vì vậy Magento (cũng) đang kiểm tracomposer.lock
tệp để xem phiên bản chính xác nào hiện đang được cài đặt.