Ben gibi işlevleri kullanmak istiyorum getName()
, getPrice()
Magento 2 ürün bilgileri almak için, vb ürünün.
Biri bana bunu nasıl başarabileceğimi gösterebilir mi?
Ben gibi işlevleri kullanmak istiyorum getName()
, getPrice()
Magento 2 ürün bilgileri almak için, vb ürünün.
Biri bana bunu nasıl başarabileceğimi gösterebilir mi?
Yanıtlar:
Magento 2'de bunun için servis katmanı kullanılması önerildi. \Magento\Catalog\Model\ProductRepository::getById
Ürünü kimliğe göre almak için yöntemi kullanmayı deneyin
Magento 2, Factories
tüm Modellerin yüklenmesi için kullanılmasını önerir . Bunu nasıl yapmanız gerektiği aşağıda açıklanmıştır:
Sınıfınızın üstüne şu satırı ekleyin:
use Magento\Catalog\Model\ProductFactory;
Şimdi class özelliği oluşturun:
protected $productFactory;
Yapıcıya bağımlılık ekleyin:
public function __construct(
ProductFactory $productFactory
) {
$this->productFactory = $productFactory;
}
Şimdi ürünü aşağıdaki gibi yükleyin:
$_product = $this->productFactory->create()->load(<product_id>);
Diğerlerinin yanı sıra, aşağıdaki hizmet sözleşmeleri yöntemlerini kullanmanızı şiddetle tavsiye ederim :
\Magento\Catalog\Api\ProductRepositoryInterface::getById
: kimliği ile bir ürün yüklemek için\Magento\Catalog\Api\ProductRepositoryInterface::get
: sku tarafından ürün yüklemek içinBunu elde etmenin daha Magento yolu, çekirdek kod boyunca çoğu yerde farklı bir şekilde yaptıkları için bunu söylemek zor olsa da, ürün havuzunu kullanmaktır.
use Magento\Catalog\Model\ProductRepository;
protected $productRepository;
public function __construct(
ProductRepository $productRepository
) {
$this->productRepository = $productRepository;
}
public function getMyProduct($productId)
{
return $this->productRepository->getById($productId);
}
Aşağıdaki gibi ürün görünümü sayfasındaki işlevi kullanarak ürün ayrıntılarını getirdim.
İşte Sm / Sawyer benim temam.
$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();