ম্যাজেন্টো ২.২: সংজ্ঞা.ম্যাপ.এক্সএমএল ফাইল কী?


11

Magento 2.2 একটি নতুন ফাইল পরিচয় definition.map.xml
এই ফাইলটির উদ্দেশ্য এবং উদ্দেশ্য কী? এটিতে স্কিমাম্যাপ সম্পত্তি তৈরির সাথে সম্পর্কিত বলে মনে হয় Magento\Ui\Config\Converter, তবে গিটহাব নোটগুলির কোনওটিই এই ফাইলগুলির উদ্দেশ্য বা এর সামগ্রীগুলি কী বোঝাতে চাইছে তা সত্যিই ব্যাখ্যা করে না।

সাধারণ কৌতূহল ব্যতীত, আমার মূল আগ্রহটি এম 2.2-তে ভাঙা একটি টিউটোরিয়াল মডিউলটি প্যাচ করাতে

উত্তর:


4

সারসংক্ষেপ

আমার বর্তমানের উচ্চ-স্তরের বোঝাপড়া হ'ল উদ্দেশ্যটি definition.map.xmlহ'ল একটি (ম্যাজেন্টো ২.২) ইউআই কম্পোনেন্টের নোড থেকে তার নোডগুলিতে এক্সএমএল ডেটা ম্যাপ করা<settings><argument>

সম্পাদনা : এই উত্তরটি লেখার পরে, আমি দেখতে পেলাম যে ম্যাজেন্টো ডকুমেন্টেশনে এখানে শব্দার্থক পরিবর্তনের বিষয়ে অতিরিক্ত তথ্য রয়েছে ।

ব্যাখ্যা

প্রসঙ্গে, ইউআই উপাদানগুলি <argument>দীর্ঘ সময়ের চেয়ে নোড ব্যবহার করে আসছে <settings>। বিশেষত, view/[area]/ui_component/etc/definition.xmlফাইল বা view/[area]/ui_component/[ui_component_name].xmlকনফিগারেশন ফাইলগুলিতে, স্ট্যান্ডার্ড অনুশীলনটি নিম্নলিখিতগুলির মতো একটি এক্সএমএল নোড অন্তর্ভুক্ত করে:

<argument name="data" xsi:type="array">
    <item name="js_config" xsi:type="array">
        <item name="provider" xsi:type="string">oracle_order_form.oracle_order_form_data_source</item>
    </item>
    <item name="label" xsi:type="string" translate="true">Company Information</item>
    <item name="template" xsi:type="string">templates/form/collapsible</item>
</argument>

এই কনফিগারেশনটি যদি বলা হয়, যদি কোনও <form>UI অংশ হয়, তবে অ্যারেতে Formপিএইচপি ক্লাসের কনস্ট্রাক্টর ( Magento/Ui/Component/Form.php) এ যায় $data। অনুবাদ মোটামুটি সোজা।

তবে, এই কাঠামোটি সংজ্ঞায়িত এক্সএমএলের সংক্ষিপ্ত নিয়ন্ত্রণ বা বৈধতা সরবরাহ করে নি। বিকাশকারীরা তাদের <argument>নোডগুলিতে দায়মুক্তি (কমপক্ষে, এক্সএসডি বৈধকরণ স্তরে) দিয়ে যা কিছু রাখতে পেরেছিল , এবং সেই মানগুলি পিএইচপি কোডটিতে অনেকগুলি রূপান্তর ছাড়াই ডানদিকে ফিরে যেতে পেরেছিল।

বিমূর্ততা এবং বৈধতার একটি স্তর যুক্ত করতে, ম্যাগেন্টো <settings>নোডটি প্রবর্তন করেছিল । এর মধ্যে একটি নোডের দিকে অন্য নজর দেওয়া definition.map.xml:

<component name="form" include="uiElementSettings">
    <schema name="current">
        <argument name="data" xsi:type="array">
            <item name="layout" xsi:type="array">
                <item name="type" type="string" xsi:type="xpath">settings/layout/type</item>
                <item name="navContainerName" type="string" xsi:type="xpath">settings/layout/navContainerName</item>
            </item>
            <item name="config" xsi:type="array">
                <item name="selectorPrefix" type="string" xsi:type="xpath">settings/selectorPrefix</item>
                <item name="messagesClass" type="string" xsi:type="xpath">settings/messagesClass</item>
                <item name="errorClass" type="string" xsi:type="xpath">settings/errorClass</item>
                <item name="ajaxSaveType" type="string" xsi:type="xpath">settings/ajaxSaveType</item>
                <item name="namespace" type="string" xsi:type="xpath">settings/namespace</item>
                <item name="ajaxSave" type="boolean" xsi:type="xpath">settings/ajaxSave</item>
                <item name="reloadItem" type="string" xsi:type="xpath">settings/reloadItem</item>
            </item>
            <item name="buttons" type="buttons" xsi:type="converter">settings/buttons</item>
            <item name="spinner" type="string" xsi:type="xpath">settings/spinner</item>
        </argument>
    </schema>
</component>

... একটি কাঠামো যা পুরানো <argument>গাছের সাথে খুব মিলে যায় তা প্রদর্শিত হতে শুরু করে। পার্থক্যটি কেবলমাত্র, উদাহরণস্বরূপ, যখন কেউ <argument>স্টাইল ব্যবহার না করে কোনও ফর্মের সাথে কোনও স্পিনার যুক্ত করতে চায় :

<argument name="data" xsi:type="array">
    <item name="spinner" xsi:type="string">[My_Spinner_Name]</item>
</argument>

... কেউ লক্ষ্য করতে পারেন যে একই কনফিগারেশন মানটি <item name="spinner" type="string" xsi:type="xpath">settings/spinner</item>নিম্নলিখিত বিকল্প সিনট্যাক্সের সাথে লাইন দ্বারা ম্যাপ করা হয়েছে :

<settings>
    <spinner>[My_Spinner_Name]</spinner>
</settings>

পৃষ্ঠতলে, এটি পুরোপুরি বিমূর্ততার স্তরের মতো মনে হয়, নতুন ম্যাপিং ফাইলে একাধিক লাইন যুক্ত করে একটি কনফিগারেশন ফাইলে এক্সএমএলের কয়েকটি অক্ষর সংরক্ষণ করা হয়।

তবে প্রতিটি ম্যাপিং কপি-পেস্টের সাধারণ বিষয় নয়। উদাহরণস্বরূপ, মনে হচ্ছে বোতামের কনফিগারেশনের জন্য ম্যাপিং:

<item name="buttons" type="buttons" xsi:type="converter">settings/buttons</item>

... এর xsi:type="converter"তুলনায় ( xpathউপরের স্পিনারের উদাহরণের তুলনায়)। যেমন একটি ঘোষণার পরিণতি নির্ধারণ আমার ক্ষমতা পরলোক হল, কিন্তু নিরাতঙ্ক সোর্স কোড এক্সপ্লোরার বিরুদ্ধে যুদ্ধ শেষ করতে Magento\Ui\Config\Converter, যা এই জটিল এক্সএমএল কনফিগারেশন নোড অনেক ম্যাচিং নামের সাথে পিএইচপি ক্লাস আছে।

এক্সএমএলে এর প্রভাব আরও স্পষ্ট। বোতাম সংজ্ঞা জন্য পুরানো বাক্য গঠন ছিল যেখানে

<argument name="data" xsi:type="array">
    <item name="buttons" xsi:type="array">
        <item name="back" xsi:type="string">Company\Basic\Block\Adminhtml\Slides\BackButton</item>
        <item name="save" xsi:type="string">Company\Basic\Block\Adminhtml\Slides\SaveButton</item>
    </item>
</argument>

... নতুন কনফিগারেশনটি দেখতে এমন হবে:

<settings>
    <buttons>
        <button name="back" class="Company\Basic\Block\Adminhtml\Slides\BackButton"/>
        <button name="save" class="Company\Basic\Block\Adminhtml\Slides\SaveButton"/>
    </buttons>
</settings>

... এবং অবশ্যই ম্যাগেন্তোর Ui/Configপিএইচপি রূপান্তর কোডটি অতিক্রম করার অতিরিক্ত সুবিধা রয়েছে ।

এই ফাইলগুলির পিছনে কোনও বহিরাগত তার উদ্দেশ্য হিসাবে কী বোঝে এটি কেবলমাত্র একটি অভিশাপের দর্শন I আমি নিশ্চিত যে একজন প্রকৃত ম্যাগেন্টো বিকাশকারী কোডের কার্যকরী বিবরণ এবং এই অতিরিক্ত স্তরের পিছনে অনুপ্রেরণা উভয়ই সম্পর্কে আরও অন্তর্দৃষ্টি প্রদান করতে সক্ষম হবেন বিমূর্ততা

সম্পাদনা : দেখে মনে হচ্ছে ম্যাগেন্টো ডকুমেন্টেশনে আসলে এই পরিবর্তনের পিছনে অনুপ্রেরণা বর্ণনা করার জন্য একটি পৃষ্ঠা রয়েছে। দেখুন এখানে আরও তথ্যের জন্য।

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