Magento 2 মিনিটকার্ট.ফটিএমএলে মোট কার্টের উদ্ধৃতি পান


10

আমি minicart.phtml এ মোট কার্টের উদ্ধৃতি পাওয়ার চেষ্টা করছি, তবে আমার ভাগ্য নেই having আমি ম্যাজেন্টো \ চেকআউট \ মডেল \ কার্ট ইনজেকশন দিচ্ছি।

আমার কোডটি এখানে:

$this->cart = $cart;
$cartQuote= $this->cart->getQuote()->getData();
echo $cartQuote['base_grand_total'];

আমি সেই কোডটি চালানোর পরে মিনিকার্টটি সামনের অংশ থেকে পুরোপুরি বিরতি হয়ে যায় এবং অদৃশ্য হয়ে যায়।

ধন্যবাদ!


আপনি আরও তথ্য ভাগ করতে পারেন?
সোহেল রানা

Hei। ২.১-এ আপডেট করার পরে কাজ না করা বলে মনে হচ্ছে এটি কেবল যখন কার্ট / চেকআউট পৃষ্ঠাতে থাকে তখন অন্যান্য পৃষ্ঠাগুলি 0 মান প্রদান করে data
ফ্রাই জুউরিকাস

উত্তর:


17

আপডেট করা সাবটোটোটাল পেতে আপনাকে আপনার মিনিফিকार्ट.ফিটএমএল ফাইলটিতে কেবল রেখার নীচে রাখতে হবে,

যদি ক্যাশে তার কাজ সূক্ষ্মভাবে সক্ষম করে, তবে এই নীচের লাইনের সব ক্ষেত্রেই কাজ করা হয়,

<span data-bind="html: getCartParam('subtotal')"></span> 

পিতামহীর মান, শিপিং হার,

আপনি মিনিটার্ট.এফটিএমটিএল ফাইলটিতে নীচের কোডটি ব্যবহার করে বর্তমান উক্তির জন্য গ্র্যান্ডটোটাল, উপমোটাল এবং শিপিং রেট পেতে পারেন, তবে যখন ক্যাশে সেই সময়ে সক্ষম হয় তখন আপনি নীচের পদ্ধতিটি ব্যবহার করে নতুন পণ্য যুক্ত করার সময় দাম আপডেট করতে পারবেন না।

<?php
    $quote = $block->getTotalsCache();
    $getSubTotal = $quote['subtotal']->getData('value');
    $getGrandTotal = $quote['grand_total']->getData('value');
    $getShippingRate = $quote['shipping']->getData('value');

        $finalSubTotal = $this->helper('Magento\Framework\Pricing\Helper\Data')->currency(number_format($getSubTotal,2),true,false);
        $finalShippingTotal = $this->helper('Magento\Framework\Pricing\Helper\Data')->currency(number_format($getShippingRate,2),true,false);
        $finalGrandTotal = $this->helper('Magento\Framework\Pricing\Helper\Data')->currency(number_format($getGrandTotal,2),true,false);
?>

উবুন্টুতে এটি আমার লোকালহোস্ট xamp এ পুরোপুরি কাজ করেছে, তবে $ উক্তি = $ ব্লক-> getTotalsCache (); পরীক্ষার সার্ভার লিনাক্স ফেডোরাতে কাজ করছেন না
কুমার এ।

এটি ইতিমধ্যে লিনাক্স সার্ভারে কাজ করছে, আমি মনে করি আপনার কিছু বিবাদ বা অন্য কোনও ত্রুটি রয়েছে।
রাকেশ জেসাদিয়া

আমি আরও জড়িত হয়েছি $ block-> getTotalsCache (); ক্যাশে অক্ষম থাকলেই কাজ করে। আপনি কি এটি ক্যাশে সক্ষম দ্বারা পরীক্ষা করেছেন? খনিটি ম্যাজেন্টো ২.১.০
কুমার এ।

1
এভাবে ছাড়ের পরিমাণ কীভাবে পাবেন?
দিবাণ বাবু

@ কুমারআবিনাভ, ক্যাশে সক্ষম হওয়ার পরে গতিশীল দাম পেতে <span data-bind = "html: getCartParam ('subtotal')"> </span> রাখুন।
রকেশ জেসাদিয়া

8

আমাদের ক্লায়েন্টের কাছ থেকেও একই প্রশ্ন ছিল had যেখানে তিনি দেখাতে চেয়েছিলেন "[পরিমাণ] টি আইটেম [উপসমষ্টি]" একটি স্টাইল কার্ট ব্লক পরিবর্তে minicart এ ডিফল্ট কার্ট আইকন হবে।

আমরা এই প্রশ্নটি এখানে পেয়েছি তবে উত্তরটি আমাদের পছন্দ হয়নি যেখানে আমাদের \Magento\Checkout\CustomerData\Cartকেবলমাত্র কিছু এইচটিএমএল সঠিকভাবে রেন্ডার করার জন্য ক্লাসটি প্রসারিত করতে হবে

এই কোডটি আমরা কীভাবে এটি টেমপ্লেটে স্থির করেছি:

<span class="counter-label">
    <!-- ko if: getCartParam('summary_count') == 1 -->
        <!-- ko text: getCartParam('summary_count') --><!-- /ko -->
        <!-- ko i18n: 'item' --><!-- /ko -->
        <span data-bind="html: getCartParam('subtotal')"></span>
    <!-- /ko -->
    <!-- ko if: getCartParam('summary_count') != 1 -->
        <!-- ko text: getCartParam('summary_count') --><!-- /ko -->
        <!-- ko i18n: 'items' --><!-- /ko -->
        <span data-bind="html: getCartParam('subtotal')"></span>
    <!-- /ko -->
</span>

দেখে মনে হচ্ছে আপনি স্ট্যান্ডার্ড নকআউট.জেএস ডাটা বাঁধাইও ব্যবহার করতে পারেন এবং ক্রেজি ম্যাজেন্টো 2 নকআউট মন্তব্য পদ্ধতিটি ব্যবহার করার দরকার নেই। getCartParam('subtotal')এইচটিএমএল পদ্ধতিতে রেন্ডারিংয়ের ফলে এটি সমস্যার সমাধান করেছে যেখানে <span ="price"></span>ট্যাগের কারণে এটি সাধারণত সাবটোটেলটি ভুলভাবে মুদ্রণ করবে


5

এই উপরের কোডটি পৃষ্ঠা লোডে কাজ করবে, তবে ম্যাজেন্টো 2 এজ্যাক্সের সাথে কাজ করবে না কারণ এটি এখন নকআউট জেএস ব্যবহার করে।

তার জন্য আপনার ব্যবহার করা উচিত -

  1. আপনার মডিউলে " age ম্যাজেন্টো \ চেকআউট \ কাস্টমারডাটা \ কার্ট " ম্যাজেন্টো ক্লাসটি ওভাররাইড করুন এবং " getSicationData " পদ্ধতিটি প্রসারিত করুন
    পাবলিক ফাংশন getSicationData ()
    {
        $ অবজেক্টম্যানেজার = \ ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ অ্যাপ \ অবজেক্ট ম্যানেজার :: getInstance (); // অবজেক্ট ম্যানেজারের ইনস্ট্যান্স
        $ মূল্যহেলপার = $ অবজেক্ট ম্যানেজার-> তৈরি করুন ('ম্যাজেন্টো me ফ্রেমওয়ার্ক \ মূল্য নির্ধারণ \ সহায়তাকারী \ ডেটা'); // মূল্য সহায়তার ইনস্ট্যান্স

        $ মোট = $ এটি-> getQuote () -> getTotals ();
        রিটার্ন [
            'সারাংশ_কাউন্ট' => $ এটি-> getSummaryCount (),
            'সাবটোটাল' => আইসেট ($ মোট ['উপমোটাল'])
                ? $ This-> checkoutHelper-> formatPrice ($ মোট [ 'উপসমষ্টি'] -> getValue ())
                : 0,
            'সাবটোটাল_ভ্যালু' => আইসেট (als মোট ['উপমোটাল'])
                ? $ PriceHelper-> মুদ্রা ($ মোট [ 'উপসমষ্টি'] -> getValue (), সত্য, মিথ্যা)
                : '',
            'সম্ভাব্য_পৃষ্ঠা_চেকআউট' => $ এটি-> ইজ পসিবলঅনপেজচেকআউট (),
            'আইটেম' => $ এটি-> getRecentItems (),
            'Extra_actions' => $ this-> লেআউট> createBlock ( 'Magento \ ক্যাটালগ \ ব্লক \ ShortcutButtons') -> toHtml (),
            'isGuestCheckoutAllowed' => $ এটি-> isGuestCheckoutA অনুমোদিত (),
        ];
    }

এখানে আমি একটি নতুন কার্ট পরম " সাবটোটাল_ভ্যালু " যুক্ত করেছি কারণ " সাবটোটাল " দাম ধারক স্প্যানটি ফিরিয়ে দেবে এবং এটি কেও ব্যবহার করে পাঠ্য হিসাবে প্রদর্শিত হবে will এখানে আপনাকে " অবজেক্ট ম্যানেজার ইনস্ট্যান্স " সরাসরি ব্যবহার করতে হবে , আপনি " __ কনস্ট্রাক্ট " এর উপর নির্ভরতা ইনজেক্ট করতে সক্ষম হবেন না ।

দ্রষ্টব্য, কয়েকটি ব্যতিক্রম রয়েছে যেখানে আমাদের " অবজেক্ট ম্যানেজার ইনস্ট্যান্স " সরাসরি ব্যবহারের প্রয়োজন হতে পারে । আমাদের ক্ষেত্রে এটি কনস্ট্রাক্টরের পিছনে সামঞ্জস্য।
অবজেক্টম্যানেজার ব্যতিক্রম

  1. এরপরে, আপনার থিমে ম্যাজেন্টো ডিফল্ট থিম " /cart/minicart.phtml " অনুলিপি করুন এবং কেও কোড যুক্ত করুন।

    কো পাঠ্য: getCartParam ('উপমোটাল_মূল্য')


0

আপনার লেআউটে একটি ব্লক সংজ্ঞায়িত করুন যেখানে কোন শ্রেণীর মধ্যে "ম্যাজেন্টো \ চেকআউট \ ব্লক \ কার্ট ot উত্তাল" হিসাবে চিহ্নিত

<block class="Magento\Checkout\Block\Cart\Totals" name="quote.print.totals" as="quote.print.totals" after="checkout.cart" 
            template="MyNamespace_PrintCart::totals.phtml"/>

তারপরে। Phtml এ আপনার নীচের কোড থাকতে পারে

<?php 
$totals = $block->getTotals() ;
?>
<table class="data table totals">
    <tbody>
        <?php foreach($totals as $key => $total) :?>
            <?php if(!empty($total->getValue())) :?>
                <tr>
                    <td><?= $total->getTitle()->getText() ?></th>
                    <td>
                        <span class="price"><?= $this->helper('Magento\Framework\Pricing\Helper\Data')->currency(number_format($total->getValue(),2),true,false) ?></span>                    
                    </td>
                </tr>
            <?php endif ?>
        <?php endforeach ?>
    </tbody>
    </table>

প্রত্যাশিত আউটপুট

এখানে চিত্র বর্ণনা লিখুন

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