Разница между корневыми тегами "страница" и "макет" в Magento 2


В Magento 2 некоторые макеты обрабатывают XML-файлы, открытые с помощью

<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">
Author: Alan Storm, 2016-01-15

3 answers

Эти вопросы связаны с различными конфигурациями 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>

Имея это, файл макета был проверен XSD при загрузке xml. В дополнение к этому он выделяет все возможные узлы и атрибуты узлов в layout.xml файл.

То же самое с page_configuration.xsd определение для узла <page />. Этот XSD описывает узлы, которые можно использовать для описания страницы.

Надеюсь, это поможет.

 13
Author: Max Pronko, 2017-05-11 05:01:00

Файлы макетов, которые открываются с помощью <layout></layout>, являются макетами страниц , которые объявляют каркас страницы внутри раздела <body>, например, макет с одним столбцом или макет с двумя столбцами.

Файлы макета, которые открываются с помощью <page></page>, являются файлами конфигурации страницы , которые добавляют содержимое в каркас, определенный в файле макета страницы.

Вот официальный документ об этом, пожалуйста, сообщите нам, может ли это быть улучшенный: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html

 9
Author: Alex, 2016-01-18 06:59:10

Одно из различий, которое я заметил, заключается в том, что каркас страницы внутри тела, вы можете получить ajax только часть html. Обычно, если вы нажмете на контроллер, вы получите всю страницу, начинающуюся с тега. Эти контроллеры возвращают объекты страниц, созданные PageFactory, который использует xml-формат типа. Но когда вы хотите динамически загружать некоторые phtml с помощью ajax-вызова, например, формы фильтра, это полезно. Magento_ImportExport динамически изменяет фильтры экспорта, когда сущность (продукт, клиент) изменения. Это пример того, когда magento использует (adminhtml_export_getfilter.xml).

 0
Author: Abhishek Jakhotiya, 2017-05-10 19:59:48