ฉันต้องการใช้ฟังก์ชั่นเช่นgetName()
, getPrice()
ฯลฯ ของผลิตภัณฑ์เพื่อดึงข้อมูลผลิตภัณฑ์ใน Magento 2
ทุกคนสามารถแสดงให้ฉันเห็นว่าฉันจะประสบความสำเร็จได้อย่างไร
ฉันต้องการใช้ฟังก์ชั่นเช่นgetName()
, getPrice()
ฯลฯ ของผลิตภัณฑ์เพื่อดึงข้อมูลผลิตภัณฑ์ใน Magento 2
ทุกคนสามารถแสดงให้ฉันเห็นว่าฉันจะประสบความสำเร็จได้อย่างไร
คำตอบ:
ใน Magento 2 เสนอให้ใช้เลเยอร์บริการสำหรับสิ่งนี้ ลองใช้\Magento\Catalog\Model\ProductRepository::getById
วิธีการรับผลิตภัณฑ์โดยใช้รหัส
Magento 2 แนะนำให้ใช้Factories
สำหรับการโหลดทุกรุ่น นี่คือวิธีที่คุณควรทำ:
เหนือชั้นเรียนของคุณเพิ่มบรรทัดนี้:
use Magento\Catalog\Model\ProductFactory;
ตอนนี้สร้างคุณสมบัติคลาส:
protected $productFactory;
ในตัวสร้างของคุณเพิ่มการพึ่งพา:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
ตอนนี้โหลดผลิตภัณฑ์ดังนี้:
$_product = $this->productFactory->create()->load(<product_id>);
นอกเหนือจากคำตอบอื่น ๆ ฉันขอแนะนำให้ใช้วิธีสัญญาบริการต่อไปนี้:
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: เพื่อโหลดผลิตภัณฑ์ตามรหัส\Magento\Catalog\Api\ProductRepositoryInterface::get
: เพื่อโหลดผลิตภัณฑ์โดย skuวิธีวีโอไอพีที่มากขึ้นในการบรรลุเป้าหมายนี้ถึงแม้ว่ามันจะยากที่จะบอกเนื่องจากสถานที่ส่วนใหญ่ในรหัสหลักทำแตกต่างกันคือการใช้ที่เก็บผลิตภัณฑ์
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
สำหรับสิ่งนี้คุณต้องใช้ด้านล่าง
ใช้ \Magento\Catalog\Model\Resource\Product\CollectionFactory
$prod_id = "Your product id goes here";
$om = \Magento\Framework\App\ObjectManager::getInstance();
$pdata = $om->create('Magento\Catalog\Model\Product')->load($prod_id);
ฉันดึงรายละเอียดผลิตภัณฑ์โดยใช้ฟังก์ชั่นในหน้ามุมมองผลิตภัณฑ์เช่นด้านล่าง
Sm / Sawyer นี่เป็นธีมของฉัน
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();