ম্যাজেন্টো 2 - কার্টে সমস্ত আইটেম কীভাবে পাবেন?


23

চেকআউট পৃষ্ঠায় ( chekout/cart) আমি কার্ট আইটেমগুলির উপর ভিত্তি করে চেকআউট বোতাম url গন্তব্যটি সম্পাদনা করতে চাই ( link.phtml)।

আমি কীভাবে সমস্ত জিনিস কার্টে পেতে পারি? আমি এপিআই ব্যবহার না করে এটি করতে চাই। ধন্যবাদ।

উত্তর:


26

আমি দুটি অংশে প্রশ্নের উত্তর দেব:

I. আপনার চেকআউট URL টি কোথায় পরিবর্তন করা উচিত?

গন্তব্য link.phtmlহয় $block->getCheckoutUrl()। কার্যকারিতা পরিবর্তন করতে আপনার টেম্পলেটটি পরিবর্তন করা উচিত নয়, Magento\Checkout\Block\Onepage\Linkপরিবর্তে ব্লকটি পরিবর্তন করা উচিত। রিটার্নের মান পরিবর্তন করার জন্য এটির জন্য একটি প্লাগইন তৈরি করুন afterGetCheckoutUrl()

২। কিভাবে গাড়িতে সমস্ত আইটেম পাবেন?

হিসাবে Magento_Checkout এবং Magento_Quote এ পরিষেবা চুক্তিগুলি এখনও প্রয়োজনীয় পদ্ধতি সরবরাহ করে না, তাই আমরা কার্টের মডেলটি ব্যবহার করি। আপনার প্লাগ ইন এটিকে এভাবে ইনজেক্ট করুন:

public function __construct(\Magento\Checkout\Model\Cart $cart)
{
    $this->cart = $cart;
}

এখন আপনি কার্টটিতে অ্যাক্সেস পেয়েছেন, আপনি বিভিন্ন উপায়ে আইটেমগুলি পুনরুদ্ধার করতে পারেন, যা মূলত ম্যাজেন্টো 1 এর মতো :

  • $this->cart->getQuote()->getItemsCollection()

    বর্তমান উক্তির সাথে সম্পর্কিত সমস্ত আইটেমের সাথে একটি উদ্ধৃতি আইটেম সংগ্রহ প্রদান করে।

  • $this->cart->getItems()

    এটি উপরের পদ্ধতির জন্য একটি শর্টকাট, তবে কোনও উদ্ধৃতি না থাকলে এটি একটি খালি অ্যারে প্রদান করে, সুতরাং আপনি সংগ্রহের উদাহরণ পাওয়ার উপর নির্ভর করতে পারবেন না।

  • $this->cart->getQuote()->getAllItems()

    আইটেম সংগ্রহটি লোড করে, তারপরে মুছে ফেলা হিসাবে চিহ্নিত না হওয়া (যেমন বর্তমান অনুরোধে মুছে ফেলা হয়েছে) এমন সমস্ত আইটেমের একটি অ্যারে প্রদান করে ।

  • $this->cart->getQuote()->getAllVisibleItems()

    আইটেম সংগ্রহটি লোড করে, তারপরে এমন সমস্ত আইটেমের একটি অ্যারে ফিরিয়ে দেয় যা মুছে ফেলা হিসাবে চিহ্নিত করা হয়নি এবং যার পিতা-মাতা নেই (যেমন আপনি বান্ডেলযুক্ত এবং কনফিগারযোগ্য পণ্যগুলির জন্য আইটেমগুলি পান তবে তাদের সাথে সম্পর্কিত শিশুদের নয়)। প্রতিটি অ্যারে আইটেম কার্ট পৃষ্ঠায় প্রদর্শিত একটি সারির সাথে সামঞ্জস্য করে।

আপনার চাহিদা সবচেয়ে উপযুক্ত কি চয়ন করুন। বেশিরভাগ ক্ষেত্রে শেষ পদ্ধতিটি আপনার প্রয়োজন।


কার্টের মডেল এবং পদ্ধতি ব্যবহার করে যে কোনও সক্রিয় কোট মডেল থেকে স্টোরটি দেখতে আসা যে কোনও ব্যক্তির সমস্ত গাড়িতে সমস্ত আইটেম পাবেন AllItems()বা getAllVisibleItems()ফিরে আসবে? অথবা আমার কার্ট থেকে কেবল একটি (আমি এটির জন্য বাজি রেখেছি বরং আমি চেকআউট সেশন অবজেক্টটি ব্যবহার করব এবং এটি থেকে কুতোয় অবজেক্টটি পাব)? পার্থক্যটি গুরুত্বপূর্ণ, কারণ আমি ব্লক ক্লাসে চেকআউট সেশনটি ব্যবহার করতে চেয়েছিলাম, তবে প্রকৃতপক্ষে ব্লুটের ভিতরে গেলে কুতোয় খালি থাকে।
বার্টোস্জ কুবিকি

এটি সর্বদা বর্তমান সেশনের কার্ট।
ফ্যাবিয়ান শেমংলার 21

এবং কিভাবে পণ্য বিভাগে পাবেন?
тарьытарь

21

ম্যাজেন্টো \ চেকআউট \ মডেল \ কার্টের ব্যবহার হ্রাস করা হয়েছে।

উদ্ধৃতি এবং আপনার কার্ট আইটেমগুলি পেতে আপনার সেশনটি ব্যবহার করা উচিত।

use Magento\Checkout\Model\Session;

public function __construct(
        ...
        Session $session
        ...
    ) {
        ...
        $this->_session = $session;
        ...
    }

public function yourFunction()
{
    $items = $this->_session->getQuote()->getAllVisibleItems();
}

আমি নিশ্চিত যে ম্যাজেন্টো শীঘ্রই অধিবেশনটির জন্য এক ধরণের ভান্ডার যুক্ত করবে।

যতদূর আমি বলতে পারি আপনি কেবলমাত্র ম্যাজেন্টো \ কোট \ এপি \ কার্টরপোসিটরিআইন্টারফেস বা ম্যাজেন্টো ote উক্তি \ এপি \ কার্ট ম্যানেজমেন্টআইনটারফেস ব্যবহার করে কেবলমাত্র বর্তমান উদ্ধৃতিটি পেতে পারবেন না, তবে গ্রাহকের আইডি থাকলে আপনি এই দুটি ব্যবহার করতে পারেন উদ্ধৃতিটি লোড করুন (যা আমি কল্পনা করি যে উপায়টি ম্যাগেন্টো আপনাকে এটি করতে চায়) এবং সেখান থেকে উদ্ধৃতি / কার্ট আইটেম পান।

CartManagementInterface getCartForCustomer($customerId)
CartRepositoryInterface getForCustomer($customerId)

4
আমি বিশ্বাস করি সঠিক উপায়টি এখনই চেকআউট সেশনটি ব্যবহার করা Magento\Checkout\Model\Session::getQuote()
জিয়েল বার্কারস

10
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
 $cart = $objectManager->get('\Magento\Checkout\Model\Cart'); 

// retrieve quote items collection
$itemsCollection = $cart->getQuote()->getItemsCollection();

// get array of all items what can be display directly
$itemsVisible = $cart->getQuote()->getAllVisibleItems();

// retrieve quote items array
 $items = $cart->getQuote()->getAllItems();

foreach($items as $item) {
     echo 'ID: '.$item->getProductId().'<br />';
      echo 'Name: '.$item->getName().'<br />';
       echo 'Sku: '.$item->getSku().'<br />';
       echo 'Quantity: '.$item->getQty().'<br />';
      echo 'Price: '.$item->getPrice().'<br />';
    echo "<br />";            
  }

এবং কিভাবে পণ্য বিভাগে পাবেন?
тарьытарь

0

নতুন সংস্করণগুলিতে আপনি এপিআই ব্যবহার করতে পারেন:

public function __construct(\Magento\Checkout\Model\Cart\CartInterface $cart)
{
    $this->cart = $cart;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.