ম্যাজেন্টো \ উক্তি \ এপি \ তথ্য \ অ্যাড্রেস ইন্টারফেসে চেকআউট স্টেপ পরিবর্তন করার সময় সম্পত্তিতে শ্রেণিভিত্তিক সেটার নেই


18

1 - আমি গ্রাহক_ড্রেসগুলিতে একটি eav বৈশিষ্ট্য যুক্ত করব

$attributesInfo = [
    'reference' => [
         'label' => 'Reference',
         'type' => 'varchar',
         'input' => 'text',
         'position' => 100,
         'visible' => true,
         'required' => false,
    ],
];

foreach ($attributesInfo as $attributeCode => $attributeParams) {
    $customerSetup->addAttribute('customer_address', $attributeCode, $attributeParams);
}

2 - আমি আমার মডিউলটিতে এক্সটেনশন বৈশিষ্ট্য যুক্ত করেছি

<extension_attributes for="Magento\Quote\Api\Data\AddressInterface">
    <attribute code="reference" type="string"/>
</extension_attributes>

আমার প্রয়োজনীয়js-config.js এ আমি রেফারেন্স ফিল্ড যুক্ত করতে কিছু জাভাস্ক্রিপ্ট ফাইল ওভাররাইড করি

var config = {
"map": {
    "*": {
        "Magento_Checkout/js/model/shipping-save-processor/default" : "Agr_Checkout/js/shipping-save-processor-default-override",
        "Magento_Customer/js/model/customer/address" : "Agr_Checkout/js/model/customer/address",
        "Magento_Checkout/js/model/address-converter" : "Agr_Checkout/js/model/address-converter",
        "Magento_Checkout/js/model/new-customer-address" : "Agr_Checkout/js/model/new-customer-address"
    }
}

3 - আমি নিশ্চিত করি যে রেফারেন্স ক্ষেত্রটি ঠিকানায় প্রেরণ করছে

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

4 - যখন আমি আমার শিপিংয়ের তথ্য প্রেরণ করি ( পরবর্তীটিতে ক্লিক করুন) আমি এই ত্রুটিটি পাচ্ছি: "সম্পত্তি" রেফারেন্স "এর" ম্যাজেন্টো \ কোট \ এপিআই \ ডেটা \ অ্যাড্রেস ইন্টারফেস "শ্রেণিতে সংশ্লিষ্ট সেটার নেই" "

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

আমি ইতিমধ্যে করেছি: - পরিষ্কার এবং ফ্ল্যাশ ম্যাজেন্টো ক্যাশে - রান সেটআপ: আপগ্রেড - রান সেটআপ: ডি: সংকলন

আমি কি ভুল করছি?


নীচের উত্তর কি কাজ করেছে?
স্টিভি জি

আমি হার্ড এসকিএল সন্নিবেশ দ্বারা সমাধান করেছি, ঠিকানার_আইডের সাথে আপডেটের জন্য একটি স্ক্রিপ্ট সম্পাদন করেছি, আমি জানি ভুল তবে আমি কিছুটা তাড়াহুড়ো করেছিলাম, আমি পরে পরীক্ষা করব এবং আপনাকে একটি প্রতিক্রিয়া জানাব।
allamgr

আমি মনে করি না যে আপনাকে দোষ দেওয়া যায় ... আপাতদৃষ্টিতে আপনি কেবল এন্টারপ্রাইজে কাস্টম_অ্যাট্রিবিউট যুক্ত করতে পারেন এবং এখন পর্যন্ত আমি এর কাছাকাছি কোনও "সহজেই কাস্টমাইজযোগ্য চেকআউট" খুঁজে পাইনি।
এলএম_ফিল্ডিং

কোন আপডেট সম্পর্কিত?
ম্যাজেন্টো 2 ডেভলপার

@ আল্লামগ্রার নতুন গ্রাহক ঠিকানার সাথেও আমি একই সমস্যার মুখোমুখি হয়েছি? আপনি কি এর সমাধান পেয়েছেন? আপনি কি আমাকে এই সম্পর্কে আপনার চিন্তা ভাগ করতে পারেন? prnt.sc/iovkp2
নাগারাজু কে

উত্তর:


1

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

    class InstallData implements InstallDataInterface
    {
        private $_eavSetupFactory;
        private $_eavConfig;
        private $_attributeResource;
        protected $_logger;

        public function __construct(EavSetupFactory $eavSetupFactory, Config $eavConfig, Attribute $attributeResource, Monolog $logger)
        {
            $this->_eavSetupFactory = $eavSetupFactory;
            $this->_eavConfig = $eavConfig;
            $this->_attributeResource = $attributeResource;
            $this->_logger = $logger;
        }

        public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
        {
            $eavSetup = $this->_eavSetupFactory->create(['setup' => $setup]);
            $addressAttributes = [
        'attribute1' => [
            'type' => 'int',
            'label' => 'attribute1',
            'input' => 'text',
            'unique' => true,
            'required' => false,
            'visible' => true,
            'user_defined' => false,
            'position' => 100,
            'system' => false,
            'adminhtml_only' => 0
        ],
        'attribute2' => [
            'type' => 'int',
            'label' => 'attribute2',
            'input' => 'text',
            'required' => false,
            'visible' => true,
            'user_defined' => false,
            'position' => 110,
            'system' => false,
            'adminhtml_only' => 1
        ]
    ];

    $usedInFormsAddress = [
            'adminhtml_customer_address',
            'customer_address_edit',
            'customer_register_address'
        ];

    foreach ($addressAttributes as $code => $options) {
        $eavSetup->addAttribute(
            'customer_address',
            $code,
            $options
        );

        try {
            $attribute = $this->_eavConfig->getAttribute('customer_address', $code);
            $attribute->setData(
                'used_in_forms',
                $usedInFormsAddress
            );
            $this->_attributeResource->save($attribute);
        } catch (LocalizedException $exception) {
            $this->_logger->critical($exception->getMessage());
        } catch (Exception $exception) {
            $this->_logger->critical($exception->getMessage());
        }
    }

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

এখানে এই কোডটি ফর্মগুলিতে যুক্ত হবে এবং সংরক্ষণ বা পরবর্তী পদক্ষেপে কোনও সমস্যা হবে না

$usedInFormsAddress = [
            'adminhtml_customer_address',
            'customer_address_edit',
            'customer_register_address'
        ];

try {
            $attribute = $this->_eavConfig->getAttribute('customer_address', $code);
            $attribute->setData(
                'used_in_forms',
                $usedInFormsAddress
            );
            $this->_attributeResource->save($attribute);
        } catch (LocalizedException $exception) {
            $this->_logger->critical($exception->getMessage());
        } catch (Exception $exception) {
            $this->_logger->critical($exception->getMessage());
        }

0

এটি কাস্টম বৈশিষ্ট্যের মাধ্যমে সেট করার চেষ্টা করুন।

উদাহরণ:

...
 custom_attribute: [{"attribute_code": "reference", "value": "Your value"}]
...

আপনি কি কখনও এটি কাজ করতে পেরেছেন বা এটি কেবল একটি পরীক্ষা?
এলএম_ফিল্ডিং

আমি এটি কাজ করেছিলাম
ফিনিক্স 128_ রিকার্ডোটি

সম্প্রদায় সংস্করণ সহ? আমি এটির প্রচুর প্রশংসা করব, এমনকি অনুগ্রহ করে যদি আপনি কীভাবে তা প্রদর্শন করতে পারেন।
এলএম_ফিল্ডিং

1
এটি কাস্টম বিযুক্ত ফ্রন্টএন্ড চেকআউট পদ্ধতিতে ম্যাজেন্টো 2 এন্টারপ্রাইজ সংস্করণ সহ ছিল। আমাকে সেই কোডটি অনুসন্ধান করতে হবে। এটি একটি পুরানো কাজ।
ফিনিক্স 128_ রিকার্ডোটি

আপনি যদি এটি পান তবে আমাকে প্রদর্শন করুন, তবে আমি মনে করি এটি উপলব্ধ নেই।
এলএম_ফিল্ডিং

0

আপনি কীভাবে অনুরোধে অ্যাট্রিবিউটটি পাস করবেন? আপনি ব্রাউজার কনসোলটি চেক করতে পারেন

{
    ...
    extension_attributes: {
         reference: "value"
    }
}

এটা সঠিক. আপনি var ফোল্ডার এবং উত্পন্ন ফোল্ডারটি var / cache var / page_cache var / view_proceed এবং উত্পন্ন / মুছে ফেলতে পারেন ।

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