1

I have been making modifications to an existing Magento project. I want to add custom attribute to the product in Checkout page's order summary section. For this, I created a plugin following the answer in Magento2 - How can I display a product attribute value in Order Summary block? enter image description here

After page load completes my custom attribute is not present. enter image description here

Please help me to solve this issue.

Thanks in advance.....!

Below is my magento2 Code

di.xml

enter image description here

Module.xml

enter image description here

ConfigProviderPlugin.php


<?php

namespace Custom\Checkout\Plugin;

class ConfigProviderPlugin extends \Magento\Framework\Model\AbstractModel
{

    public function afterGetConfig(\Magento\Checkout\Model\DefaultConfigProvider $subject, array $result)
    {

        $items = $result['totalsData']['items'];

        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        for($i=0;$i<count($items);$i++){
            $qty = $items[$i]['qty'];

            $quoteId = $items[$i]['item_id'];
            $quote = $objectManager->create('\Magento\Quote\Model\Quote\Item')->load($quoteId);
            $productId = $quote->getProductId();
            $product = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);
            $box_per_lens = $product->getResource()->getAttribute('box_per_lens')->getFrontend()->getValue($product);   
            $use_quantity_type = $product->getResource()->getAttribute('use_quantity_type')->getFrontend()->getValue($product);
            $quantity_type = $product->getResource()->getAttribute('quantity_type')->getFrontend()->getValue($product);         
            $quantity_type1 ='';
            $box_per_lens1 ='';
            $qData = '';
            if($use_quantity_type == 'No' || $use_quantity_type == 'NA'){
               $quantity_type1='Quantity';
               $qData = $qty.' '.$quantity_type1;

            }else{
                if($quantity_type == 'No' || $quantity_type == 'NA'){

                   $quantity_type1 ='';
                }else{
                     $quantity_type1 = $quantity_type;
                }
                if($box_per_lens == 'No' || $box_per_lens == 'NA'){
                    $box_per_lens1 = "";
                     $qData = $qty.' '.$quantity_type1;
                 }
                 else{
                     $box_per_lens1  = $box_per_lens;
                      $qData = $qty.' '.$quantity_type1.'('.($qty*$box_per_lens1).' lenses)';
                 }

            }


            $items[$i]['flavor'] = "call66";
            $items[$i]['qtyData'] = $qData;
        } 


        $result['totalsData']['items'] = $items;
        return $result;
    }

}

details.html

Override location: app/design/frontend/Theme/luma/Mageplaza_Osc/web/template/container/summary/item/details.html

<td class="a-left product ">


    <div class="product-item-detail">
        <div class="product-item-inner">
            <div class="product-item-name-block">
                <!-- ko if: getProductUrl($parent) -->
                <a data-bind="attr:{href: getProductUrl($parent)}" target="_blank">
                    <strong class="product-item-name" data-bind="text: $parent.name"></strong>
                </a>
                <!-- /ko -->
                <!-- ko ifnot: getProductUrl($parent)-->
                <strong class="product-item-name" data-bind="text: $parent.name"></strong>
                <!-- /ko -->
                <!-- <span class="product-item-qty" data-bind="text: $parent.qty"></span> -->
                <span class="product-item-qtyData" data-bind="text: $parent.qtyData"></span>
            </div>
        </div>

    </div>

    <!-- ko if: isItemAvailable($parent.item_id) -->
    <div class="gift-message-item-content">
        <div class="gift-message-item" data-bind="attr: { id: 'item' +$parent.item_id, title: giftMessageItemsTitleHover},click: loadGiftMessageItem.bind($data,$parent.item_id)">
            <i class="fa fa-gift fa-2x" aria-hidden="true"></i>
        </div>
        <div style="display: none" data-bind="attr: { id: 'item' + $parent.item_id,title: $parent.name},afterRender: setModalElement">
            <div class="gift-options-content">
                <div class="fieldset">
                    <div class="field field-from col-mp mp-6">
                        <!-- ko ifnot: window.checkoutConfig.oscConfig.isUsedMaterialDesign -->
                        <label for="gift-message-whole-from" class="label">
                            <span data-bind="i18n: 'From:'"></span>
                        </label>
                        <!-- /ko -->
                        <div class="control input-field">
                            <input type="text" id="gift-message-whole-from" class="input-text" required>
                            <!-- ko if: window.checkoutConfig.oscConfig.isUsedMaterialDesign -->
                            <label for="gift-message-whole-from" class="label">
                                <span data-bind="i18n: 'From:'"></span>
                            </label>
                            <!-- /ko -->
                        </div>
                    </div>
                    <div class="field field-to col-mp mp-6">
                        <!-- ko ifnot: window.checkoutConfig.oscConfig.isUsedMaterialDesign -->
                        <label for="gift-message-whole-to" class="label">
                            <span data-bind="i18n: 'To:'"></span>
                        </label>
                        <!-- /ko -->
                        <div class="control input-field">
                            <input type="text" id="gift-message-whole-to" class="input-text" required>
                            <!-- ko if: window.checkoutConfig.oscConfig.isUsedMaterialDesign -->
                            <label for="gift-message-whole-to" class="label">
                                <span data-bind="i18n: 'To:'"></span>
                            </label>
                            <!-- /ko -->
                        </div>
                    </div>
                    <div class="field text col-mp mp-12">
                        <!-- ko ifnot: window.checkoutConfig.oscConfig.isUsedMaterialDesign -->
                        <label for="gift-message-whole-message" class="label">
                            <span data-bind="i18n: 'Message:'"></span>
                        </label>
                        <div class="control">
                            <textarea id="gift-message-whole-message" class="input-text" rows="5" cols="10"></textarea>
                        </div>
                        <!-- /ko -->
                        <!-- ko if: window.checkoutConfig.oscConfig.isUsedMaterialDesign -->
                        <div class="control">
                            <textarea id="gift-message-whole-message" class="input-text" rows="3" cols="10" data-bind="attr:{placeholder: $t('Message')}"></textarea>
                        </div>
                        <!-- /ko -->
                    </div>
                </div>
            </div>
            <div class="actions-toolbar">
                <div class="primary">
                    <button type="submit" name="update" class="action update"  data-bind="click: updateGiftMessageItem.bind($data,$parent.item_id)">
                        <span data-bind="i18n: 'Update'"></span>
                    </button>
                </div>
                <div class="primary">
                    <button type="submit" name="delete" class="action delete" data-bind="click: deleteGiftMessageItem.bind($data,$parent.item_id)">
                        <span data-bind="i18n: 'Delete'"></span>
                    </button>
                </div>
            </div>
        </div>
    </div>
    <!-- /ko -->
</td>
<!-- <td class="a-center details-qty">
    <div class="qty-wrapper">
        <a href="javascript:void(0);" class="button-action minus" data-bind="click: minusQty" title="Minus"></a>
        <div class="qty-wrap">
            <input class="item_qty input-text update value" name="item_qty"  data-bind="value: $parent.qty, attr: {id: $parent.item_id}, event: {change: changeQty}" />
        </div>
        <a href="javascript:void(0);" class="button-action plus" data-bind="click: plusQty" title="Plus"></a>
    </div>
</td> -->
<td class="a-center subtotal">
    <!-- ko foreach: getRegion('after_details') -->
    <!-- ko template: getTemplate() --><!-- /ko -->
    <!-- /ko -->
</td>
<td class="a-center last button-remove">
    <div class="remove-wrapper">
        <a href="javascript:void(0);" class="button-action remove" data-bind="click:function(){removeItem($parent.item_id)}"></a>
    </div>
</td>
  • Can you guys please help me? – appy Nov 25 '17 at 13:08
  • Post your code to check the problem. – Ronak Chauhan Nov 25 '17 at 13:12
  • I have posted code in above Question... – appy Nov 25 '17 at 13:35
  • Please check... – appy Nov 25 '17 at 13:37
  • How did you solve this issue? I am also facing the same issue .. – aravind Feb 22 at 5:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.