Magento 2 এ list.phtml এ প্রতিটি পণ্যের স্টক পরিমাণ কীভাবে পাবেন?
Magento 2 এ list.phtml এ প্রতিটি পণ্যের স্টক পরিমাণ কীভাবে পাবেন?
উত্তর:
আপনার list.phtml
ফাইলে বেলো কোড যুক্ত করুন
<?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();
রেফারেন্সের জন্য, পণ্য স্টকের তথ্য পুনরুদ্ধার করার ক্ষেত্রে ম্যাজেন্টো 2 সমস্ত ক্যাটালগ জুড়ে এই সঠিক ইন্টারফেসটি ব্যবহার করে।
নোট করুন যে বর্গাকার বন্ধনীগুলির মধ্যে যে কোনও কিছু সংশোধন করা দরকার।
ম্যাজেন্টো 2 এ প্রতিটি পণ্যের স্টক পরিমাণ কীভাবে পাবেন
কন্ট্রোলার বা ব্লক ইনজেকশনের জন্য \ ম্যাজেন্টো \ ক্যাটালগ তালিকাভুক্তি \ এপি \ স্টকস্টেটআইন্টারফেস
public function __construct(
\Magento\CatalogInventory\Api\StockStateInterface $stockItem
)
{
$this->stockItem = $stockItem;
}
এবং তারপরে কিটিটি পেতে getStockQty ফাংশনটি ব্যবহার করুন
$this->stockItem->getStockQty($product->getId(), $product->getStore()->getWebsiteId());
আপনি যদি .phtml ফাইলে পরিমাণ পেতে চান তবে ব্যবহার করুন use
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
echo $StockState->getStockQty($product->getId(), $product->getStore()->getWebsiteId());
?>
স্ক্রিপ্টের নীচে ম্যাজেন্টো 2 তে পণ্য স্টক পরিমাণ, ন্যূনতম পরিমাণ এবং স্টক বিশদ পেতে সহায়তা করবে।
$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
।
এই মুহূর্তে আপনার এম 2 এর জন্য নতুন মডিউল বিকাশ করতে হবে
তারপরে 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();
}
}