Magento 2 में "पेज" और "लेआउट" रूट टैग के बीच अंतर


18

Magento 2 में, कुछ लेआउट एक्सएमएल फाइलों को संभालते हैं, जिनके साथ खुला होता है

<page.../>

रूट टैग। दूसरों के साथ खुला

<layout.../>

रूट टैग। क्या उपरोक्त टैगों में से किसी एक का उपयोग करने से लेआउट फ़ाइल XML फ़ाइल में कोई कार्यक्षमता अंतर आ जाता है? या यह शुद्ध खिड़की ड्रेसिंग है? या बीच में कुछ।

दो उदाहरण

<!-- File: vendor/magento/module-weee/view/frontend/layout/default.xml -->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">

तथा

<!-- File: vendor/magento/module-widget/view/adminhtml/layout/adminhtml_widget_loadoptions.xml -->
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">

जवाबों:


13

एक अलग XSD कॉन्फ़िगरेशन के कारण ये मामले।

<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">

घोषणा में कहा गया है कि हम XSD की परिभाषा के साथ लेआउट का उपयोग करना चाहते हैं

lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd

में layout_generic.xsdफ़ाइल इसके लिए परिभाषा प्रदान करता है layoutके साथ नोड genericLayoutतत्व प्रकार।

<xs:complexType name="genericLayout">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="referenceContainer" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="container" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="block" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="referenceBlock" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="update" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="move" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="uiComponent" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
</xs:complexType>

Xml लोड होने पर XSD द्वारा लेआउट फ़ाइल को मान्य किया गया है। इसके अलावा यह लेआउट में सभी संभावित नोड्स और नोड विशेषताओं को उजागर करता है। xml फ़ाइल।

नोड के page_configuration.xsdलिए परिभाषा के साथ भी <page />। यह XSD नोड्स का वर्णन करता है जिसका उपयोग पृष्ठ का वर्णन करने के लिए किया जा सकता है।

आशा करता हूँ की ये काम करेगा।


2
टोपी कुछ मदद करता है, उसके लिए +1, लेकिन यह अभी भी स्पष्ट नहीं है कि अंतर क्यों मौजूद है। क्या लेआउट सिर्फ अनकनेक्टेड विरासत है? या क्या एक अच्छे कारण के लिए अंतर मौजूद है।
एलन स्टॉर्म

1
यह एक कारण से मौजूद है। Phtml या html फ़ाइल बनाने के बजाय लचीलेपन की कल्पना करें और यदि आपको मौजूदा फ़ाइल में कुछ संशोधन की आवश्यकता है तो आपको इसे कॉपी करना होगा, आपके पास पृष्ठ को परिभाषित करने का घोषणात्मक तरीका होगा। इसके साथ html, बॉडी और हेड एलिमेंट्स हैं। लेआउट - यह विन्यास की एक और अलग परत है, जहाँ आप सामग्री जैसे ब्लॉक, कंपोनेंट, कंटेनर इत्यादि के साथ काम करते हैं
Max Pronko

1
मुझे यकीन नहीं है कि मुझे भेद दिखाई देता है - क्या <layout/>फ़ाइल के आंतरिक नोड्स <page/> <body/>को समान प्रभाव के लिए शामिल नहीं किया जा सकता है? या क्या मैं कुछ न कुछ भूल रहा हूं?
एलन स्टॉर्म

इस दृष्टिकोण को चिंताओं के अलगाव के रूप में देखें।
मैगेंटो

9

लेआउट फाइलें जो पृष्ठ लेआउट के साथ खुलती <layout></layout>हैं , जो अनुभाग के अंदर एक पृष्ठ के वायरफ्रेम की घोषणा करती हैं , उदाहरण के लिए एक-कॉलम लेआउट या दो-स्तंभ लेआउट।<body>

लेआउट फ़ाइलें जिसके साथ खोलने <page></page>हैं पेज विन्यास फ़ाइलों को wireframe एक पृष्ठ लेआउट फाइल में परिभाषित सामग्री जोड़ते हैं।

इसके बारे में आधिकारिक दस्तावेज यहां दिया गया है, कृपया हमें बताएं कि क्या इसमें सुधार किया जा सकता है: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html


यह समझने के लिए बहुत आसान है, तो आप स्पष्ट रूप में आप अपने जवाब में किया था हो सकता है, कि एक के साथ खुलता है <layout>और साथ एक <page>पर इस लेख
जमील

0

एक अंतर जो मैंने देखा है, क्योंकि शरीर के अंदर एक पृष्ठ की वायरफ्रेम है , आप ajax को html के एक भाग को ही पुनः प्राप्त कर सकते हैं। आम तौर पर यदि आप किसी कंट्रोलर से टकराते हैं तो आपको टैग से शुरू होने वाला पूरा पेज मिल जाता है। ये कंट्रोलर पेजफैक्ट द्वारा बनाई गई पेज ऑब्जेक्ट लौटा रहे हैं जो टाइप लेआउट xml का उपयोग करता है। लेकिन जब आप कुछ phtml को गतिशील रूप से फ़िल्टर फॉर्म जैसे ajax कॉल के साथ लोड करना चाहते हैं, तो सहायक है। Magento_ImportExport इकाई (उत्पाद, ग्राहक) में परिवर्तन होने पर गतिशील रूप से निर्यात फ़िल्टर बदल देता है। यह एक उदाहरण है जब magento का उपयोग करता है (adminhtml_export_getfilter.xml)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.