Magento2: কীভাবে আমার কাস্টম মডিউলে পণ্য আইডি পাবেন


11

আমি ম্যাজেন্টো 2 তে নতুন এবং বর্তমানে আমি একটি কাস্টম মডিউল তৈরি করছি এবং আমি ID/SKUক্যাটালগ থেকে পণ্যটি পেতে চাই । আমি ব্লক ফোল্ডারে অবস্থিত একটি ফাংশন ব্যবহার করে কল করার চেষ্টা করছি। দয়া করে উপদেশ দাও!

উত্তর:


36

এটা চেষ্টা কর:

<?php 
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product
    echo $product->getId();
    echo $product->getName();
?>

অথবা

আপনার ব্লক ফাইলে বেলো কোড যুক্ত করুন।

উদাহরণ স্বরূপ app/code/AR/CustomModule/Block/CustomBlock.php

<?php
namespace AR\CustomModule\Block;
class CustomBlock extends \Magento\Framework\View\Element\Template
{
    protected $_registry;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,       
        \Magento\Framework\Registry $registry,
        array $data = []
    )
    {       
        $this->_registry = $registry;
        parent::__construct($context, $data);
    }

    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }

    public function getCurrentCategory()
    {       
        return $this->_registry->registry('current_category');
    }

    public function getCurrentProduct()
    {       
        return $this->_registry->registry('current_product');
    }   

}
?>

আপনার টেম্পলেট (কাস্টম। পিএফটিএমএল) ফাইলে বর্তমান পণ্য ডেটা মুদ্রণ করা হচ্ছে

if ($currentProduct = $block->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getId() . '<br />';       
}

এটি একটি মোহন মত কাজ করে! আপনার কি এই রেজিস্ট্রি সম্পর্কে ব্যাখ্যায় আপত্তি আছে ?? এই এলাকায় কোন বিকাশকারী গাইড আছে ??
মিঃ

2
রেজিস্ট্রি বাদে প্রোডাক্ট আইডি পাওয়ার কোনও বিকল্প পদ্ধতি আছে কি?
সুশীবম

0
<?php 
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');//get current product
echo $product->getId();
echo $product->getName();
?>

এটি আমার পক্ষে কাজ করে।


অবজেক্ট ম্যানেজার সরাসরি ব্যবহার করবেন না
লরেঞ্জো

0
<?php
     $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
     $productid = $this->getRequest()->getParam('id');                                       
     $product = $objectManager->create('Magento\Catalog\Model\Product')->load($productid);
     echo $product;
?>                                                                          

বর্তমান পণ্য আইডি পেতে এই কোডটি ব্যবহার করুন


0

আপনি চেষ্টা করতে পারেন $product = $this->abstractProduct->getProduct();

সঙ্গে \Magento\Catalog\Block\Product\AbstractProduct $abstractProduct

আমার জন্য কাজ করেছেন :)


এটি পণ্য তালিকা পৃষ্ঠার জন্য কাজ করছে না
অমিত নরণীওয়াল

-3

এটা চেষ্টা কর:

<?php  
   $productId = 8;
   $objectManager =  \Magento\Framework\App\ObjectManager::getInstance();
   $currentproduct = $objectManager->create('Magento\Catalog\Model\Product')->load($productId);
   echo $currentproduct->getName(); 
?>

আরে, উত্তরের জন্য ধন্যবাদ! আমি মনে করি আমি আমার প্রশ্নটি ভুল করে বলেছি। আমার বর্তমান মডিউলগুলি পণ্যের তথ্যের জন্য কেবলমাত্র একটি অ্যাড, আমি সত্যিই বোঝাতে চাইছি যে আমি কীভাবে বর্তমান পৃষ্ঠাগুলির আইডি পাব? উদাহরণস্বরূপ, "লোকালহোস্ট / টেস্ট / প্রোডাক্ট-এএইচটিএমএল" এ আমি কীভাবে এই নির্দিষ্ট পণ্যের আইডিটি পুনরুদ্ধার করতে পারি
মিং

আমি ক্লাস 'ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ অ্যাপ্লিকেশন \ অবজেক্টম্যানেজারটি পাওয়া যায় নি
সুশীবাম

আমি আমার কাস্টম মডেলটিতে প্রবেশের চেষ্টা করছি যেমন: $ productId = 1; $ অবজেক্টম্যানেজার = \ ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ অ্যাপ \ অবজেক্ট ম্যানেজার :: getInstance (); $ কারেন্টপ্রডাক্ট = $ অবজেক্ট ম্যানেজার-> তৈরি করুন ('বিক্রেতা \ মডিউল \ মডেল \ সারি') -> লোড ($ productId); প্রতিধ্বনি '<pre>'; মুদ্রণ_আর ($ বর্তমানপ্রডেক্ট-> getEntityId ()); মরা; আমি নালিতে প্রেরণের জন্য কল পেয়েছি .. প্লিজ সহায়তায়
সুশীবম

কীভাবে ডায়নামিকভাবে $ productId = 8 পাবেন;
সুশীবম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.