回答:
\Magento\Framework\App\ProductMetadataInterface
コンストラクタに注入する必要があります。
protected $productMetadata;
public function __construct(
...
\Magento\Framework\App\ProductMetadataInterface $productMetadata,
...
) {
$this->productMetadata = $productMetadata;
parent::__construct(...);
}
次に、次の方法で現在のMagentoバージョンを取得できます(そのProductMetadataInterface
オブジェクトが$productMetadata
フィールドに割り当てられている場合):
$version = $this->productMetadata->getVersion();
エディション(コミュニティ/エンタープライズ):
$edition = $this->productMetadata->getEdition();
方法1:
Magentoの標準的な方法を使用して、サイトのバージョンを取得します。ブロックを使用する-テンプレートの方法は、magento 2で関数を呼び出すための適切な方法です。
ブロックファイル内
<?php
namespace Vendor\Modulename\Block
class Version extends \Magento\Framework\View\Element\Template{
protected $_productMetadata;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Framework\App\ProductMetadataInterface $productMetadata,
array $data = []
) {
parent::__construct($context,$data);
$this->_productMetadata = $productMetadata;
}
public function getVersion()
{
return $this->_productMetadata->getVersion();
}
}
template
ファイル内、
echo $block->getVersion();
Direct ObjectManagerを使用することは、magento 2で使用する適切な方法ではありません。
$objManager = \Magento\Framework\App\ObjectManager::getInstance();
$magentoVersion = $objManager->get('Magento\Framework\App\ProductMetadataInterface');
echo $magentoVersion->getVersion();