Magento 2 - उत्पाद informations कैसे प्राप्त करें


18

मैं जैसे कार्यों का उपयोग करना चाहते getName(), getPrice()Magento 2 में उत्पाद जानकारी प्राप्त कर सके, उत्पाद की आदि।

क्या कोई मुझे दिखा सकता है कि मैं इसे कैसे प्राप्त कर सकता हूं?


@ जॉन, क्या यह जवाब के नीचे काम कर रहा है। यदि हाँ स्वीकार करते हैं तो यह अन्य उपयोगकर्ताओं के लिए उपयोगी होगा। यदि कोई मुझे नहीं बताए, ताकि हम समाधान प्रदान कर सकें।
बोझाजा

जवाबों:


22

Magento 2 में इसके लिए सेवा परत का उपयोग करने का प्रस्ताव दिया गया। \Magento\Catalog\Model\ProductRepository::getByIdआईडी द्वारा उत्पाद प्राप्त करने के लिए विधि का उपयोग करने का प्रयास करें


1
आपको इसके बजाय \ Magento \ Catalog \ Api \ ProductRepositoryInterface :: getById का उपयोग करना चाहिए।
थियागो लीमा

इसके चुंबक 2 में उपयोग ProductRepository के लिए सिफारिश नहीं
वकार अली

12

Magento 2 Factoriesसभी मॉडलों को लोड करने के लिए उपयोग करने की अनुशंसा करता है । यहां बताया गया है कि आपको यह कैसे करना चाहिए:

  1. अपनी कक्षा के ऊपर इस पंक्ति को जोड़ें:

    use Magento\Catalog\Model\ProductFactory;
  2. अब वर्ग संपत्ति बनाएँ:

    protected $productFactory;
  3. अपने निर्माता में, निर्भरता जोड़ें:

    public function __construct(
       ProductFactory $productFactory
    ) {
       $this->productFactory = $productFactory;
    }
  4. अब नीचे के रूप में उत्पाद लोड:

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

कोई वर्ग \ Magento 2.1.7 में Magento \ सूची \ मॉडल \ ProductFactory है
Shahir Hajir

2
अधिकांश कारखाने कक्षाएं मॉड्यूल में मौजूद नहीं हैं। वे ऑब्जेक्ट मैनेजर का उपयोग करके कक्षाओं के लिए var / पीढ़ी में उत्पन्न होते हैं। आप वैसे भी उत्पादों को लोड करने के लिए कारखानों का उपयोग न करें। दूसरों द्वारा सुझाए गए अनुसार \ Magento \ कैटलॉग \ Api \ ProductRepositoryInterface का उपयोग करें। या बहुत कम से कम मैगेंटो \ कैटलॉग \ मॉडल \ ProductRepository का उपयोग करें :: getById ($ id)
फ्रैंक

ProductRepository का उपयोग करके नई वस्तुओं का निर्माण नहीं होता है, जैसे किसी कारखाने का उपयोग करना
Raul Sanchez

10

अन्य उत्तरों के शीर्ष पर, मैं निम्नलिखित सेवा अनुबंध विधियों का उपयोग करने का सुझाव देता हूं :

  • \Magento\Catalog\Api\ProductRepositoryInterface::getById : किसी उत्पाद को आईडी द्वारा लोड करना
  • \Magento\Catalog\Api\ProductRepositoryInterface::get : स्कू द्वारा किसी उत्पाद को लोड करना

1
यह सही उत्तर है, यह Magento के निर्देशक devdocs.magento.com/guides/v2.1/extension-dev-guide/…
LucScu

6

इसे प्राप्त करने का अधिक मैगेंटो तरीका है, हालांकि यह बताना मुश्किल है क्योंकि वे पूरे कोर कोड के अधिकांश स्थानों को अलग-अलग करते हैं, उत्पाद रिपॉजिटरी का उपयोग करना है।

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 2 में उत्पाद का उपयोग करने के साथ बाज़ार का मुद्दा है
वकार अली

0

इसके लिए आपको नीचे उपयोग करना होगा

उपयोग \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

मेरे पास नीचे दिए गए उत्पाद दृश्य पृष्ठ में फ़ंक्शन का उपयोग करके उत्पाद विवरण है।

यहाँ 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();

बहुत बुरा जवाब
LucScu

उपयोगी नहीं है - सिर्फ भ्रमित करना
मथायस क्लेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.