অ্যাডমিন শিপিং অ্যাড্রেস বক্সে একটি কাস্টম বৈশিষ্ট্য কীভাবে দেখানো যায়?


13

আমি কাস্টম মান সহ চেকআউট পৃষ্ঠায় ড্রপ-ডাউন কাস্টম ক্ষেত্রটি যুক্ত করেছি। এটি সূক্ষ্মভাবে কাজ করে ডাটাবেসে অ্যাট্রিবিউট মানগুলি সংরক্ষণ করে তবে অর্প শিপিং ঠিকানায় প্রদর্শিত হয় না। কোন ধারণা কীভাবে এটি দেখানো যায়?

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

InstallSchema.php

$connection->addColumn(
                $installer->getTable('quote_address'),
                'mob_type',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table ::TYPE_TEXT,
                    'nullable' => true,
                    'default' => NULL,
                    'length' => 255,
                    'comment' => 'Mob Type'
                ]
            );
        $connection->addColumn(
                $installer->getTable('sales_order_address'),
                'mob_type',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table ::TYPE_TEXT,
                    'nullable' => true,
                    'default' => NULL,
                    'length' => 255,
                    'comment' => 'Mob Type'
                ]
            );
        $installer->endSetup();

প্লাগ লাগানো

use Magento\Checkout\Block\Checkout\LayoutProcessor;

class MobPlugin
{
    public function afterProcess(LayoutProcessor $subject, $jsLayout) {
        $customAttributeCode = 'mob_type';
        $customField = [
            'component' => 'Magento_Ui/js/form/element/select',
            'config' => [
                'customScope' => 'shippingAddress.custom_attributes',
                'template' => 'ui/form/field',
                'elementTmpl' => 'ui/form/element/select',
                'id' => 'drop-down',
            ],
            'dataScope' => 'shippingAddress.custom_attributes.mob_type',
            'label' => 'Mob Type',
            'provider' => 'checkoutProvider',
            'visible' => true,
            'validation' => ['required-entry' => true],
            'sortOrder' => 150,
            'id' => 'drop-down',
            'options' => [
                [
                    'value' => 'local',
                    'label' => 'Local',
                ],
                [
                    'value' => 'vip',
                    'label' => 'VIP',
                ]
            ]
        ];

        $jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']['shippingAddress']['children']['shipping-address-fieldset']['children'][$customAttributeCode] = $customField;

        return $jsLayout;
    }
}

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

ইত্যাদি / di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Checkout\Model\ShippingInformationManagement">
        <plugin name="save_custom_field" type="Namespace\CustomModule\Plugin\Checkout\SaveAddressInformation" />
    </type>

</config>

SaveAddressInformation.php

class SaveAddressInformation
{
    protected $quoteRepository;
    public function __construct(
        \Magento\Quote\Model\QuoteRepository $quoteRepository
    ) {
        $this->quoteRepository = $quoteRepository;
    }
    /**
     * @param \Magento\Checkout\Model\ShippingInformationManagement $subject
     * @param $cartId
     * @param \Magento\Checkout\Api\Data\ShippingInformationInterface $addressInformation
     */
    public function beforeSaveAddressInformation(
        \Magento\Checkout\Model\ShippingInformationManagement $subject,
        $cartId,
        \Magento\Checkout\Api\Data\ShippingInformationInterface $addressInformation
    ) {
        $shippingAddress = $addressInformation->getShippingAddress();
    $shippingAddressExtensionAttributes = $shippingAddress->getExtensionAttributes();
    if ($shippingAddressExtensionAttributes) {
        $customField = $shippingAddressExtensionAttributes->getMobType();
        $shippingAddress->setMobType($customField);
    }

    }
}

এখানে চিত্র বর্ণনা লিখুন রেফ এক্সটেনশন

উপরে প্লাগইন সূক্ষ্মভাবে কাজ করছে এবং উদ্ধৃতি_ ঠিকানা টেবিলে মানগুলি সংরক্ষণ করে save আমি অর্ডার ভিউ পৃষ্ঠা এবং ইমেল টেম্পলেটটিতে কাস্টম বৈশিষ্ট্যটি প্রদর্শন করতে চাই any কোডটিতে কী সমস্যা আছে তা কারওই ধারণা নেই। আগাম ধন্যবাদ



আপনার উদাহরণ magento2.2.3 এ কাজ করে না
Parmar

আপনার সমস্যাটি ভাগ করুন যাতে আমি এটি যাচাই করতে পারি
Magento2 Devloper

অতিথি চেকআউট সক্ষম হলে আমি কীভাবে ইমেল আইডি পেতে পারি
কেতান বোরাদা

উদ্ধৃতি এবং অর্ডার অবজেক্টটি এটি ফিরিয়ে দিন
Magento2 Devloper

উত্তর:


4

সিস্টেম কনফিগারেশনে নেভিগেট করুন

Stores -> Configuration -> Customers -> Customer Configuration -> Address Templates

ঠিকানা টেমপ্লেটগুলি থেকে, এইচটিএমএল বিভাগ সন্ধান করুন, আনটিক চেকবক্স সিস্টেমের মানটি অনুসরণ করুন, নিম্নলিখিত কোড যুক্ত করুন। প্রয়োজনে আপনি একটি অ্যাট্রিবিউট কোড পরিবর্তন করতে পারেন।

ইমেল টেমপ্লেটের জন্য, একই ঠিকানার ফর্ম্যাট [এইচটিএমএল ঠিকানা ফর্ম্যাট] কাজ করবে।

{{depend mob_type}}Mob_Type: {{var mob_type}}{{/depend}}

php bin/magento cache:cleanনা দেখলে চালান ।

একটি বৈশিষ্ট্য অর্ডার ভিউ পৃষ্ঠাতে প্রদর্শিত হবে এবং ইমেলটিও অর্ডার করবে।

উপরের উভয় ঠিকানায় প্রদর্শিত হয় তবে আপনি যদি কেবল শিপিংয়েই প্রদর্শন করতে চান তবে আপনাকে শিপিং ঠিকানা টেবিলের (কেবল sales_order_address and quote_address) এসএমএসের মূল্য দিতে হবে এটি বিলিং না করে ঠিক আছে। উপভোগ করুন

সারণী দর্শন -

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

ফলাফল -

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


আমি কীভাবে কেবল শিপিংয়ের ঠিকানাতে সঞ্চয় করতে পারি?
ম্যাজেন্টো 2 ডেভলপার

আপনার ইভেন্টটি যুক্ত করতে হবে। বা এটি ব্যবহারযোগ্য
এম 2 ডেভেলপার

আসলে এটি আমার ক্ষেত্রে কাজ করে না, আমি বুঝতে পারি না যে কোনও পরিবর্তনশীল কীভাবে এক্সটেনশন অ্যাট্রিবিউটকে উল্লেখ করতে পারে যা ইতিমধ্যে উদ্ধৃতি_ ঠিকানা এবং বিক্রয়_অর্ডার_ড্রেস সারণীতে সংরক্ষণ করা হয়েছিল। দেখে মনে হচ্ছে আমাকে দুটি তথ্য.ইফটিএমএল টেম্পলেটটি ওভাররাইড করা দরকার
hkguile

4

আমার পদ্ধতির সাথে চেষ্টা করুন। প্রশ্নের বর্ণিত হিসাবে মডিউল বিবেচনা করা।

  1. প্রশ্নটিতে একই মডিউলটি দেখানো হয়েছে। পরিবর্তন নেই

  2. ইনস্টল করা রেফারেন্স এক্সটেনশন যা আপনি উল্লেখ করছেন (এসএমএস এক্সটেনশন)

সিস্টেম কনফিগারেশনে নেভিগেট করুন

স্টোর -> কনফিগারেশন -> গ্রাহক -> গ্রাহক কনফিগারেশন -> ঠিকানা টেমপ্লেট

ঠিকানা টেমপ্লেটগুলি থেকে, এইচটিএমএল বিভাগ সন্ধান করুন, আনটিক চেকবক্স সিস্টেমের মানটি অনুসরণ করুন, নিম্নলিখিত কোড যুক্ত করুন। প্রয়োজনে আপনি একটি অ্যাট্রিবিউট কোড পরিবর্তন করতে পারেন।

ইমেল টেমপ্লেটের জন্য, একই ঠিকানার ফর্ম্যাট [এইচটিএমএল ঠিকানা ফর্ম্যাট] কাজ করবে।

{{depend mob_type}}Mob_Type: {{var mob_type}}{{/depend}}

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

ক্যাশে সাফ করার প্রয়োজন হতে পারে।

php bin/magento cache:cleanনা দেখলে চালান

একটি বৈশিষ্ট্য অর্ডার ভিউ পৃষ্ঠাতে প্রদর্শিত হবে এবং ইমেলটিও অর্ডার করবে।

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


আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। আমরা কেবল শিপিং ঠিকানা অঞ্চলে প্রদর্শন পরিচালনা করব কীভাবে?
ম্যাজেন্টো 2 ডেভলপার

কেবল শিপিং ঠিকানার জন্য আপনাকে আরও সিস্টেম কনফিগারেশন তৈরি করতে হতে পারে html_for_shippingMagento/sales/view/adminhtml/templates/order/view/info.phtml, লাইন নিচে $block->getFormattedAddress( $order->getShippingAddress() );পরিবর্তন $block->getFormattedShippingAddress( $order->getShippingAddress() );ইন info.phpফাইল, আপনি শুধুমাত্র শিপিং ঠিকানা বিন্যাস করার জন্য নতুন পদ্ধতি তৈরি হতে পারে। আপনি 'html' বিন্যাস পদ্ধতির প্যারামিটারটি 'html_for_shipping' এ পরিবর্তন করতে পারেন, যেখানে 'html_for_shipping' শিপিং ঠিকানা বিন্যাসের জন্য আপনার নতুন সিস্টেম কনফিগারেশন মান হবে।
সন্দীপ

হঠাৎ এটি কাজ করে না ক্রম হিসাবে এসএমএস বিবরণ উপরে আমাকে প্রদর্শন না। কোন ধারণা?
ম্যাজেন্টো 2 ডেভলপার

আমি এই @ সন্দীপটি চেষ্টা করেছি..কিন্তু এটি প্রদর্শিত হয় না .... দয়া করে আমাকে সহায়তা করুন
বিশালী মারিয়াপ্পান

3

যদি বৈশিষ্ট্যটি সঠিকভাবে সংরক্ষণ করা হয় তবে আপনাকে ঠিকানা টেম্পলেটগুলিতে অ্যাট্রিবিউট যুক্ত করতে হবে add এগুলি পাওয়া যাবে

স্টোর -> কনফিগারেশন -> গ্রাহক -> গ্রাহক কনফিগারেশন -> ঠিকানা টেমপ্লেট

আপনি শেষে কিছু যুক্ত করতে পারেন:

{{depend mob_type}}, Mob. Type: {{var mob_type}}{{/depend}}

টেম্পলেট ধরণের উপর নির্ভর করে আপনি <br/>নতুন লাইন তৈরি করতে ব্যবহার করতে পারেন ।


আমি কেবল শিপিং ঠিকানা প্রদর্শন করতে চাই এবং আমি কীভাবে অর্ডার ভিউ পৃষ্ঠায় পরিচালনা করতে পারি?
ম্যাজেন্টো 2 ডেভলপার

এই টেম্পলেটগুলি সর্বত্র ব্যবহৃত হয়। সম্মুখভাগ, ব্যাকএন্ড, পিডিএফ, ইমেল ... বৈশিষ্ট্যটি যদি কেবল শিপিং ঠিকানায় সংরক্ষণ করা হয় তবে এটি কেবল সেখানে প্রদর্শিত হবে
ল্যাংলি

ঠিক আছে, আমাকে এটি পরীক্ষা করতে দিন
ম্যাজেন্টো 2 ডেভলপার

কাজ করছে না. কোথাও প্রদর্শিত হয় না। - nimb.ws/9cnpHW
ম্যাজেন্টো 2 ডেভলপার

হাই @ ল্যাংলে উত্তরের জন্য ধন্যবাদ, আমি কেবল বিলিং এড্রেসিংটি শিপিং ঠিকানায় প্রদর্শিত হচ্ছে না, আমি এটি উভয় জায়গায় প্রদর্শন করতে চাই।
শিবশঙ্কর এম

2

আমি এটি এর মতো করব: এটিকে যুক্ত করুন quoteএবং sales_orderসেখান থেকে প্রাপ্ত ডেটাগুলিতে নিম্নলিখিত কোডটি ব্যবহার করুন (এছাড়াও যদি আপনি বিদ্যমান ডিবি টেবিলটি আপডেট করতে চান তবে আপগ্রেডশেমি স্ক্রিপ্টগুলি ব্যবহার করার চেষ্টা করুন, নতুন ডিবি টেবিলের জন্য ইনস্টলস্কেম ব্যবহার করা উচিত)

namespace Vendor\Module\Setup;

use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;

class UpgradeSchema implements UpgradeSchemaInterface
{
    public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();

        $quoteAddressTable = 'quote';
        $orderTable = 'sales_order';

        //Quote address table
        $setup->getConnection()
            ->addColumn(
                $setup->getTable($quoteAddressTable),
                'mob_type',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    'length' => 255,
                    'comment' =>'Mob type'
                ]
            );
        //Order address table
        $setup->getConnection()
            ->addColumn(
                $setup->getTable($orderTable),
                'mob_type',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    'length' => 255,
                    'comment' =>'Mob type'

                ]
            );

        $setup->endSetup();
    }
}

হালনাগাদ

নীচে মিক্সিন জেএস তৈরি করুন:

ভিতরে requirejs-config.js

var config = {
    config: {
        mixins: {
            'Magento_Checkout/js/action/set-shipping-information': {
                '<YourNamespace_YourModule>/js/action/set-shipping-information-mixin': true
            }
        }
    }
};

দ্য set-shipping-information-mixin.js

/*jshint browser:true jquery:true*/
/*global alert*/
define([
    'jquery',
    'mage/utils/wrapper',
    'Magento_Checkout/js/model/quote'
], function ($, wrapper, quote) {
    'use strict';

    return function (setShippingInformationAction) {

        return wrapper.wrap(setShippingInformationAction, function (originalAction) {
            var shippingAddress = quote.shippingAddress();
            if (shippingAddress['extension_attributes'] === undefined) {
                shippingAddress['extension_attributes'] = {};
            }

            shippingAddress['extension_attributes']['custom_field'] = shippingAddress.customAttributes['custom_field'];
            // pass execution to original action ('Magento_Checkout/js/action/set-shipping-information')
            return originalAction();
        });
    };
});

এছাড়াও আপনি একটি থাকতে হবে extension_attributes.xmlমধ্যে Your_Module/etc/নিম্নলিখিত কোড সহ

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
    <extension_attributes for="Magento\Quote\Api\Data\AddressInterface">
        <attribute code="custom_field" type="string" />
    </extension_attributes>
</config>

যেখানে প্রয়োজন সেখানে পরিবর্তন করুন (অ্যাট্রিবিউট কোড, প্রকার ইত্যাদি) এটি শিপিংয়ের তথ্যে আপনার কাস্টম বৈশিষ্ট্য যুক্ত করবে


তবে টেবিলের এই ক্ষেত্রের ডেটা কীভাবে সংরক্ষণ করবেন আপনি দয়া করে কোডটি ভাগ করতে পারেন? ধন্যবাদ
ম্যাজেন্টো 2 ডেভলপার

আপনি কীভাবে আমাকে di.xmlফাইলটিতে আপনার প্লাগইন সংজ্ঞায়িত করতে পারেন ?
ভ্লাদ প্যাট্রু

আমি ক্ষেত্রের কোড সংরক্ষণ করুন এবং সূক্ষ্মভাবে কাজ করেছিলাম তা পরীক্ষা করে দেখুন তবে কীভাবে অর্ডার শিপিং এড্রেস প্রদর্শন করবেন?
ম্যাজেন্টো 2 ডেভলপার

আপডেটের জন্য ধন্যবাদ তবে আমার উপরের প্রশ্নটি দেখুন। অর্ডার ভিউ এবং ইমেল টেমপ্লেটে প্রদর্শিত জিনিসগুলি প্রদর্শন করা হয়নি তবে প্রদর্শিত হয়েছে। ধন্যবাদ
ম্যাজেন্টো 2 ডেভলপার

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