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