ฉันยังใหม่กับ magento2 และตอนนี้ฉันกำลังสร้างโมดูลที่กำหนดเองและฉันต้องการรับผลิตภัณฑ์ID/SKU
จากแคตตาล็อก ฉันพยายามโทรโดยใช้ฟังก์ชั่นที่อยู่ในโฟลเดอร์ Block กรุณาแนะนำ!
ฉันยังใหม่กับ magento2 และตอนนี้ฉันกำลังสร้างโมดูลที่กำหนดเองและฉันต้องการรับผลิตภัณฑ์ID/SKU
จากแคตตาล็อก ฉันพยายามโทรโดยใช้ฟังก์ชั่นที่อยู่ในโฟลเดอร์ Block กรุณาแนะนำ!
คำตอบ:
ลองสิ่งนี้:
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product
echo $product->getId();
echo $product->getName();
?>
หรือ
เพิ่มรหัสตะโกนในไฟล์บล็อกของคุณ
ตัวอย่างเช่น app/code/AR/CustomModule/Block/CustomBlock.php
<?php
namespace AR\CustomModule\Block;
class CustomBlock extends \Magento\Framework\View\Element\Template
{
protected $_registry;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
array $data = []
)
{
$this->_registry = $registry;
parent::__construct($context, $data);
}
public function _prepareLayout()
{
return parent::_prepareLayout();
}
public function getCurrentCategory()
{
return $this->_registry->registry('current_category');
}
public function getCurrentProduct()
{
return $this->_registry->registry('current_product');
}
}
?>
การพิมพ์ข้อมูลผลิตภัณฑ์ปัจจุบันในไฟล์เทมเพลตของคุณ (custom.phtml)
if ($currentProduct = $block->getCurrentProduct()) {
echo $currentProduct->getName() . '<br />';
echo $currentProduct->getSku() . '<br />';
echo $currentProduct->getId() . '<br />';
}
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product
echo $product->getId();
echo $product->getName();
?>
มันใช้งานได้สำหรับฉัน
.
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productid = $this->getRequest()->getParam('id');
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($productid);
echo $product;
?>
ใช้รหัสนี้เพื่อรับรหัสผลิตภัณฑ์ปัจจุบัน
คุณสามารถลอง $product = $this->abstractProduct->getProduct();
กับ \Magento\Catalog\Block\Product\AbstractProduct $abstractProduct
ทำงานให้ฉัน :)
ลองสิ่งนี้:
<?php
$productId = 8;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
echo $currentproduct->getName();
?>