ম্যাজেন্টো 2 গ্রাহক গ্রুপের আকারে কাস্টম ফিল্ড যুক্ত কীভাবে সংরক্ষণ করবেন?


9

আমি ব্যবহার করে গ্রাহক গোষ্ঠী আকারে কিছু কাস্টম ক্ষেত্র যুক্ত করেছি upgradeSchema.php

তারপরে আমি দেখতে পেলাম যে গ্রাহক গ্রুপ কোড এবং কর আইডির মতো আসল ক্ষেত্রগুলি সরবরাহিত এপিআইতে সেটার পদ্ধতি ব্যবহার করে সংরক্ষণ করা হয়। এটি ম্যাজেন্টো 1.X এর থেকে সম্পূর্ণ আলাদা যা সংরক্ষণের জন্য কেবল সেটএক্সএক্সএক্সএক্স () ব্যবহার করে।


আমি \ ম্যাজেন্টো \ গ্রাহক \ এপি \ ডেটা \ গ্রুপইন্টারফেস $ গ্রাহকগ্রুপ-> সেটডেটা ('প্রোগ্রাম_প্রকার', $ প্রোগ্রাম টাইপ) ব্যবহার করার চেষ্টা করেছি; প্রোগ্রাম_ টাইপ ডাটাবেসে সংরক্ষণ করতে টেবিল কলাম 'প্রোগ্রাম_ টাইপ' এর সাথে সম্পর্কিত, তবে ব্যর্থ হয়েছে।
রিকি.সি

ক্ষেত্রগুলি সংরক্ষণ করার জন্য আমার কি গিটার এবং সেটার সহ একটি কাস্টম এপিআই লিখতে হবে?
রিকি.সি

উত্তর:


23

এক্ষেত্রে এক্সটেনশন অ্যাট্রিবিউট মেকানিজম ব্যবহার করা উচিত। এটি তৃতীয় পক্ষের মডিউলগুলির মাধ্যমে মূল APIগুলির সম্প্রসারণের অনুমতি দেয়। নতুন এক্সটেনশন বৈশিষ্ট্য সক্ষম করার জন্য জেনেরিক পদক্ষেপ:

  1. অফিসিয়াল ডক্সে বর্ণিত হিসাবে এক্সটেনশন বৈশিষ্ট্যটি ঘোষণা করুন । ক্লিয়ারিং varএবং চলমান পরে <project_root>/bin/magento setup:di:compile, এই নতুন বৈশিষ্ট্যের জন্য সম্পর্কিত সেটার এবং গেটরটি উপস্থিত হওয়া উচিত \Magento\Customer\Api\Data\GroupExtensionInterface(এই ইন্টারফেসটি স্বয়ংক্রিয়ভাবে উত্পন্ন)
  2. জন্য লিখুন প্লাগিন \Magento\Customer\Api\GroupRepositoryInterface::save, \Magento\Customer\Api\GroupRepositoryInterface::getById(এবং প্রয়োজনীয় হিসাবে অন্য যেকোনো পরিষেবা পদ্ধতি) সংরক্ষণ করতে / লোড নতুন অ্যাট্রিবিউট। এক্সটেনশান বিকাশকারী হিসাবে, কেবলমাত্র আপনি জানেন যে এই বৈশিষ্ট্যটি কোথায় সংরক্ষণ করা উচিত, কোনও টেবিল হতে পারে। \Magento\Downloadable\Model\Plugin\AroundProductRepositorySave::aroundSaveএকটি উদাহরণ হিসাবে দেখুন
  3. যদি আপনার এই বৈশিষ্ট্যটি সংগ্রহের মধ্যে দৃশ্যমান করার প্রয়োজন হয় (এটি অনুসন্ধানযোগ্য / ফিল্টারযোগ্য করতে), joinনোড ঘোষণা করুন declare তা না হলে কেবল এড়িয়ে যান
  4. আপনার কাস্টম বৈশিষ্ট্যটি অ্যাক্সেস করুন:, $customerGroup->getExtensionAttributes()->getMyAttribute()যেখানে customerGroupপ্রয়োগ হয় \Magento\Customer\Api\Data\GroupInterfacesetMyAttribute()পাশাপাশি ব্যবহার করা যেতে পারে

নীচে কনফিগারেশন উদাহরণ দেওয়া উচিত যা VendorName/ModuleName/etc/extension_attributes.xml

<?xml version="1.0"?>
<config>
    <extension_attributes for="Magento\Customer\Api\Data\GroupInterface">
        <!--Data interface can be used as a type of attribute, see example in CatalogInventory module-->
        <attribute code="name_of_attribute" type="string">
            <resources>
                <resource ref="VendorName_ModuleName::someAclNode"/>
            </resources>
            <!--Join is optional, only if you need to have added attribute visible in groups list-->
            <join reference_table="table_where_attribute_is_stored" reference_field="group_id_field_in_that_table" join_on_field="group_id">
                <field>name_of_added_attribute_field_in_that_table</field>
            </join>
        </attribute>
    </extension_attributes>
</config>

আমি এক্সটেনশন_ট্রিবিউটস.এক্সএমএল যুক্ত করার চেষ্টা করেছি, তবে কোনও নতুন ইন্টারফেস তৈরি করা হয়নি। PS আমি প্রজন্মের ফোল্ডারটি মুছে ফেলেছি এবং কিছু অপারেশন শুরু করেছি .....
রিকি.সি

আমার এক্সটেনশান_ট্রিবিউট.এক্সএমএল: <? এক্সএমএল সংস্করণ = "1.0"?> <config> <এক্সটেনশন_ট্রিবিটস = "ম্যাজেন্টো \ গ্রাহক \ এপিআই \ ডেটা \ গ্রুপইন্টারফেস"> <অ্যাট্রিবিউট কোড = "গ্রুপ_ডোমেন" টাইপ = "স্ট্রিং" /> </ এক্সটেনশন_ট্রিবিউটস> </ কনফিগ>
রিকি.সি

ফাইলটিকে এক্সটেনশন_ট্রিবিউটস.এক্সএমএল (বহুবচন) বলা উচিত। সিএলআই ব্যবহার করে সমস্ত অটোজেনারেটেড সত্তা জেনারেশন করার জন্য চেষ্টা করুন।
অ্যালেক্স পালিয়ারুশ

উপরের মন্তব্যে
টাইপের

আমি গুগল করেছি কিন্তু কিছুই পাইনি। কোন কমান্ডটি ব্যবহার করা উচিত তা আমাকে জানাতে পারেন? আমি একজন নতুন আগত যে ক্লাইকের সাথে পরিচিত নয়। ধন্যবাদ।
রিকি.সি

2

এটি ভুলে যাবেন না যে মডিউলটির এতে একটি register.phpফাইল দরকার এবং এটি প্রদর্শিত bin/magento module:enable VendorName_ModuleNameহওয়ার আগে আপনাকে অবশ্যই ব্যবহার করতে হবে!

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