Magento 2 में list.phtml में प्रत्येक उत्पाद का स्टॉक मात्रा कैसे प्राप्त करें?
Magento 2 में list.phtml में प्रत्येक उत्पाद का स्टॉक मात्रा कैसे प्राप्त करें?
जवाबों:
अपनी list.phtml
फ़ाइल में bellow कोड जोड़ें
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
echo $StockState->getStockQty($product->getId(), $product->getStore()->getWebsiteId());
?>
या
<?php
$stockItem = $product->getExtensionAttributes()->getStockItem();
print_r($stockItem->getQty());
?>
जैसे कुछ टिप्पणियों का उल्लेख किया गया है, आप निर्भरता इंजेक्शन का उपयोग करना चाहते हैं। ऑब्जेक्ट मैनेजर का उपयोग न करें; दूसरे शब्दों में, ऐसा न करें जो अन्य प्रतिक्रियाओं में से कोई भी हो। निम्नलिखित तकनीक को कहीं भी लागू किया जा सकता है। ब्लॉक के लिए, अपनी कक्षा को लेआउट एक्सएमएल में कक्षा में सेट करें, जो मूल का विस्तार करता है, और सही जानकारी को इंजेक्ट करता है।
उस StockRegistryInterface
इंटरफ़ेस को इंजेक्ट करें जहाँ आपको पहुँच की आवश्यकता है:
/**
* @var \Magento\CatalogInventory\Api\StockRegistryInterface
*/
private $stockRegistry;
/**
* Constructor for DI.
*
* @param \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry
*/
public function __construct(
\Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry
) {
$this->stockRegistry = $stockRegistry;
}
/**
* Get the product stock data and methods.
*
* @return \Magento\CatalogInventory\Api\StockRegistryInterface
*/
public function getStockRegistry()
{
return $this->stockRegistry;
}
इसे कहीं उपयोग करने के लिए:
/** @var \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry */
$stockRegistry = [$this|$block]->getStockRegistry();
/** @var \Magento\Catalog\Model\Product $product */
$product = [Grab Product instance however you want. This is up to you.]
// Get stock data for given product.
$productStock = $stockRegistry->getStockItem($product->getId());
// Get quantity of product.
$productQty = $productStock->getQty();
संदर्भ के लिए, Magento2 कैटलॉग पर इस सटीक इंटरफ़ेस का उपयोग करता है, जब यह उत्पाद स्टॉक जानकारी पुनर्प्राप्त करने की बात आती है।
ध्यान दें कि वर्ग कोष्ठक के भीतर कुछ भी संशोधित करने की आवश्यकता है।
Magento 2 में प्रत्येक उत्पाद की स्टॉक मात्रा कैसे प्राप्त करें
नियंत्रक या ब्लॉक इंजेक्षन के लिए \ Magento \ CatalogInventory \ Api \ StockStateInterface
public function __construct(
\Magento\CatalogInventory\Api\StockStateInterface $stockItem
)
{
$this->stockItem = $stockItem;
}
और फिर प्राप्त करने के लिए getStockQty फ़ंक्शन का उपयोग करें
$this->stockItem->getStockQty($product->getId(), $product->getStore()->getWebsiteId());
यदि आप .phtml फ़ाइल में मात्रा प्राप्त करना चाहते हैं तो उपयोग करें
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
echo $StockState->getStockQty($product->getId(), $product->getStore()->getWebsiteId());
?>
नीचे दी गई स्क्रिप्ट magento2 में उत्पाद स्टॉक मात्रा, न्यूनतम मात्रा और स्टॉक विवरण प्राप्त करने में सहायक होगी।
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productStockObj = $objectManager->get('Magento\CatalogInventory\Api\StockRegistryInterface')->getStockItem($productId);
print_r($productStockObj->getData());
यदि आप $productobj
बैकएंड की ओर से उत्पाद को बचाने के बाद चाहते हैं तो आप आसानी से catalog_product_save_after
ईवेंट का उपयोग कर सकते हैं ।
मैं मान रहा हूं कि आप पहले से ही जानते हैं कि कैसे एक मॉड्यूल बनाना है M2
।
अभी आपको M2 के लिए नए मॉड्यूल विकसित करने की आवश्यकता है
फिर इस events.xml
फाइल को नीचे के पथ में बनाएँ
app\code\YOUR_NAMESPACE\YOURMODULE\etc\adminhtml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="catalog_product_save_after">
<observer name="test_name" instance="YOUR_NAMESPACE\YOUR_MODULENAME\Observer\Productsaveafter" />
</event>
</config>
और Productsaveafter.php
नीचे की पाथ में अपनी ऑब्जर्वर फाइल बनाएं
एप्लिकेशन \ कोड \ YOUR_NAMESPACE \ YOURMODULE \ ऑब्जर्वर \
<?php
namespace YOURNAMESPACE\YOURMODULENAME\Observer;
use Magento\Framework\Event\ObserverInterface;
class Productsaveafter implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer)
{
$product = $observer->getEvent()->getProduct();
$id = $product->getId(); //Get Product Id
//Get Quantity
$stockItem = $product->getExtensionAttributes()->getStockItem();
$stockData = $stockItem->getQty();
// Get new Qty
$_vendor_qty = $product->getVendorQty();
$_on_hand_qty = $product->getOnHandQty();
$totalQty = $_vendor_qty+$_on_hand_qty; //Add New Qty
$stockItem->setQty($totalQty); //Set New Qty to Main Qty
$stockItem->save();
}
}