Magento 2 - Ürün bilgilerini alma


18

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?


@JJohn, cevapların altında çalışıyor mu? Evet ise diğer kullanıcılar için faydalı olacaktır. Eğer hayır bana bildirin, böylece çözüm sağlayabiliriz.
Bojjaiah

Yanıtlar:


22

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


1
Bunun yerine \ Magento \ Catalogue \ Api \ ProductRepositoryInterface :: getById kullanmalısınız.
Thiago Lima

Magneto 2
Waqar Ali'de

12

Magento 2, Factoriestüm Modellerin yüklenmesi için kullanılmasını önerir . Bunu nasıl yapmanız gerektiği aşağıda açıklanmıştır:

  1. Sınıfınızın üstüne şu satırı ekleyin:

    use Magento\Catalog\Model\ProductFactory;
  2. Şimdi class özelliği oluşturun:

    protected $productFactory;
  3. Yapıcıya bağımlılık ekleyin:

    public function __construct(
       ProductFactory $productFactory
    ) {
       $this->productFactory = $productFactory;
    }
  4. Şimdi ürünü aşağıdaki gibi yükleyin:

    $_product = $this->productFactory->create()->load(<product_id>);

Magento 2.1.7 sınıfında \ Magento \ Katalog \ Model \ ProductFactory yoktur
shahir hajir

2
Modülde çoğu fabrika sınıfı yoktur. Nesne yöneticisi kullanılarak sınıfları başlatmak için var / generation'de üretilirler. Zaten ürünleri yüklemek için fabrikaları kullanmamalısınız. \ Magento \ Catalogue \ Api \ ProductRepositoryInterface öğesini başkaları tarafından önerilen şekilde kullanın. Ya da en azından Magento \ Catalogue \ Model \ ProductRepository :: getById ($ id)
Frank'i

ProductRepository kullanımı, fabrika kullanımı gibi yeni nesneler oluşturmaz
Raul Sanchez


6

Bunu 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);
}

Doğru, en iyi ve doğru cevap
Matthias Kleine

Magento 2
Waqar Ali'de

0

bunun için aşağıda kullanmalısınız

kullanım \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);

-1

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();

çok kötü cevap
LucScu

Faydalı değil - sadece kafa karıştırıcı
Matthias Kleine
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.