ম্যাজেন্টো 2 - কীভাবে পণ্যের তথ্য পুনরুদ্ধার করবেন


18

আমি মতো কাজগুলির ব্যবহার করতে চান getName(), getPrice()Magento 2 পণ্যের তথ্য পুনরুদ্ধার করতে, পণ্য ইত্যাদি।

কেউ কি আমাকে দেখাতে পারে যে আমি কীভাবে এটি অর্জন করতে পারি?


@ জেহন, এটি কি উত্তর নীচে কাজ করছে? হ্যাঁ গ্রহণ করলে এটি অন্যান্য ব্যবহারকারীর জন্য কার্যকর হবে। যদি না হয় আমাকে জানান, যাতে আমরা সমাধান সরবরাহ করতে পারি।
বোজহাইয়া

উত্তর:


22

Magento 2 এ জন্য পরিষেবা স্তর ব্যবহার করার প্রস্তাব করেছিল। \Magento\Catalog\Model\ProductRepository::getByIdআইডি দ্বারা পণ্য পেতে পদ্ধতি ব্যবহার করার চেষ্টা করুন


1
আপনার পরিবর্তে \ ম্যাজেন্টো \ ক্যাটালগ \ এপি \ প্রোডাক্টরোপোসিটরিআইন্টারফেস :: getById ব্যবহার করা উচিত।
থিয়াগো লিমা

এটি ম্যাগনেটো 2
ওয়াকার আলী

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

কোন শ্রেণি নেই \ ম্যাজেন্টো \ ক্যাটালগ \ মডেল \ ম্যাজেন্টো 2.1.7 এ
প্রোডাক্ট কারখানা

2
মডিউলটিতে বেশিরভাগ কারখানার ক্লাস নেই। এগুলি অবজেক্ট ম্যানেজার ব্যবহার করে ক্লাস ইনস্ট্যান্ট করার জন্য বিভিন্ন / প্রজন্মের মধ্যে উত্পন্ন হয়। যাইহোক পণ্য লোড করার জন্য আপনার কারখানাগুলি ব্যবহার করা উচিত নয়। অন্যদের পরামর্শ অনুসারে \ ম্যাজেন্টো \ ক্যাটালগ \ এপি \ প্রোডাক্ট রিপোসিটরিআইন্টারফেস ব্যবহার করুন। অথবা খুব স্বল্প সময়ে ম্যাজেন্টো \ ক্যাটালগ \ মডেল \ প্রোডাক্ট রিপোসিটরি :: getById ($ আইডি)
ফ্রাঙ্ক

প্রোডাক্টরিপোসিটরি ব্যবহার করে নতুন নতুন বস্তু তৈরি হয় না, যেমন কারখানা ব্যবহার করে
রাউল সানচেজ

10

অন্যদের উত্তরের উপরে, আমি নিম্নলিখিত পরিষেবা চুক্তির পদ্ধতিগুলি ব্যবহার করার জন্য অত্যন্ত পরামর্শ দিচ্ছি :

  • \Magento\Catalog\Api\ProductRepositoryInterface::getById : আইডি দ্বারা একটি পণ্য লোড করতে
  • \Magento\Catalog\Api\ProductRepositoryInterface::get : স্কু দ্বারা একটি পণ্য লোড করতে

1
এটি সঠিক উত্তর, এটি ম্যাজেন্টো ডাইরেক্টিভ ডেভডোকস.মাইজেন্টো.com
guides/

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

সঠিক, সেরা এবং সঠিক উত্তর
ম্যাথিয়াস ক্লেইন

ম্যাজেন্টো 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

নীচের মত পণ্য ভিউ পৃষ্ঠায় ফাংশন ব্যবহার করে আমার কাছে পণ্য বিবরণ আনতে হবে।

এখানে এসএম / সাওয়ার আমার থিম।

$_config = $this->helper('Sm\Sawyer\Helper\Data');
$productId = $this->getProduct()->getId();
$name = $this->getProduct()->getName();
$stock1 = $this->getProduct()->getQty();
$price = $this->getProduct()->getPrice();

খুব খারাপ উত্তর
লুস্ক্কু

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