ฉันจะรับเวอร์ชัน Magento ใน Magento2.x ได้อย่างไร (เช่น2.0.0
)
ใน Magento1.x ฉันทำได้ด้วย
Mage::getVersion()
ดังนั้นสิ่งที่เทียบเท่าใน Magento2.x
ฉันจะรับเวอร์ชัน Magento ใน Magento2.x ได้อย่างไร (เช่น2.0.0
)
ใน Magento1.x ฉันทำได้ด้วย
Mage::getVersion()
ดังนั้นสิ่งที่เทียบเท่าใน Magento2.x
คำตอบ:
จนถึง Magento เวอร์ชัน 2.0.7 หมายเลขรุ่นได้รับการปรับปรุงใน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
และส่งกลับรุ่นวีโอไอพีที่เหมาะสม
ดังนั้นไม่ว่าคุณจะใช้เวอร์ชันใดในเวอร์ชัน 2.0.x หรือ 2.1.x หากคุณใช้\Magento\Framework\App\ProductMetadata::getVersion()
วิธีนี้คุณจะได้รับเวอร์ชันวีโอไอพีที่เหมาะสมเสมอ
สรุป:
วีโอไอพี 1:
Mage::getVersion() //will return the magento version
วีโอไอพี 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
ค่าคงที่ถูกลบ)
วิธีใหม่ในการรับเวอร์ชันคือการดึงมาจาก Product Metadata Instance (อ่าน version จาก composer.json):
$productMetadata = new \Magento\Framework\App\ProductMetadata();
$version = $productMetadata->getVersion();
(ดีกว่าที่จะฉีดข้อมูลเมตาของผลิตภัณฑ์ไปยังตัวสร้าง\Magento\Framework\App\ProductMetadataInterface
)
ด้านบนของคำตอบอื่น ๆ คุณจะได้รับรุ่นใหญ่ (เช่น 2.1) โดยการเข้าถึง/magento_version
บนวีโอไอพี 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);
โค้ดด้านบนนั้นมีวัตถุประสงค์เพื่อให้ข้อมูลเท่านั้น คุณต้องขุดเพิ่มเติมเพื่อให้มันทำงาน
คุณสามารถเรียกใช้คำสั่งด้านล่างเพื่อรับเวอร์ชั่นวีโอไอพี:
php bin/magento --version
สำหรับยูนิกซ์เช่นผู้ใช้
ไม่จำเป็นต้องเขียนโค้ด PHP สำหรับสิ่งนี้ เนื่องจาก Magento 2 ใช้นักแต่งเพลงมันทำให้ทุกอย่างง่ายขึ้น คุณสามารถทำได้สองวิธี:
ตรวจสอบ composer.json และค้นหาคีย์ที่เรียกว่าเวอร์ชัน หากคุณเป็นเหมือนฉันที่ชอบใช้เครื่องเทอร์มินัลคุณสามารถทำสิ่งที่ชอบในรากของโครงการ
composer licenses | grep Version:
นี่จะคืนค่าเวอร์ชันของ M2 หากคุณต้องการตรวจสอบสภาพแวดล้อมของชุมชนหรือรุ่นองค์กรจากนั้นทำต่อไปนี้:
composer licenses | grep Name:
เพียงตรวจสอบไฟล์ composer.json บน root ของ 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) ?>
ต่อไปนี้เป็นวิธีตรวจสอบเวอร์ชันของวีโอไอพี
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 และค้นหาคำหลักเวอร์ชัน หากคุณต้องการใช้เทอร์มินัลคุณสามารถเพิ่มบางอย่างลงในรูทของโครงการ
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" ซึ่งไม่ได้ระบุรุ่นที่แน่นอนดังนั้นวีโอไอพีคือ (เช่น) ตรวจสอบcomposer.lock
ไฟล์เพื่อดูเวอร์ชันที่แน่นอนที่ติดตั้งอยู่ในปัจจุบัน