সারসংক্ষেপ
আমার বর্তমানের উচ্চ-স্তরের বোঝাপড়া হ'ল উদ্দেশ্যটি 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 আমি নিশ্চিত যে একজন প্রকৃত ম্যাগেন্টো বিকাশকারী কোডের কার্যকরী বিবরণ এবং এই অতিরিক্ত স্তরের পিছনে অনুপ্রেরণা উভয়ই সম্পর্কে আরও অন্তর্দৃষ্টি প্রদান করতে সক্ষম হবেন বিমূর্ততা
সম্পাদনা : দেখে মনে হচ্ছে ম্যাগেন্টো ডকুমেন্টেশনে আসলে এই পরিবর্তনের পিছনে অনুপ্রেরণা বর্ণনা করার জন্য একটি পৃষ্ঠা রয়েছে। দেখুন এখানে আরও তথ্যের জন্য।