Magento 2'de “sayfa” ve “düzen” Kök Etiketleri Arasındaki Fark


18

Magento 2'de, bazı düzen XML dosyalarını

<page.../>

kök etiketi. Diğerleri

<layout.../>

kök etiketi. Yukarıdaki etiketlerden herhangi birinin kullanılması, mizanpaj XML dosyası düzeninde işlevsellik farklılıkları getiriyor mu? Yoksa bu saf pencere giydirme mi? Ya da arada bir şey.

İki örnek

<!-- 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">

ve

<!-- 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">

Yanıtlar:


13

Bu, farklı bir XSD yapılandırması nedeniyle önemlidir.

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

bildirgede, XSD tanımında yer alan düzeni kullanmak istediğimizi söylüyor

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

Olarak layout_generic.xsddosya bu tanımını sağlar layoutile düğüm genericLayoutelemanı türü.

<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>

Buna sahip olarak, xml yüklendiğinde mizanpaj dosyası XSD tarafından doğrulandı. Buna ek olarak layout.xml dosyasındaki tüm olası düğümleri ve düğüm niteliklerini vurgular.

Düğüm page_configuration.xsdtanımı ile aynı <page />. Bu XSD, sayfayı tanımlamak için kullanılabilecek düğümleri açıklar.

Umarım yardımcı olur.


2
şapka biraz yardımcı olur, + 1, ama hala farkın neden olduğu açık değil. Düzen sadece dönüştürülmemiş miras mı? Yoksa ayrım iyi bir nedenden dolayı var mı?
Alan Storm

1
Bir sebepten dolayı var. Sadece phtml veya html dosyası oluşturmak yerine esnekliği hayal edin ve mevcut dosyada bazı değişikliklere ihtiyacınız varsa kopyalamanız gerekir, bir sayfayı tanımlamanın açıklayıcı bir yoluna sahipsiniz. Html, gövde ve baş elemanları ile. Düzen - sadece blok, bileşen, konteyner vb. Gibi içerik parçalarıyla çalıştığınız başka bir farklı yapılandırma katmanıdır
Max Pronko

1
Ayrımı gördüğümden emin değilim - bir <layout/>dosyanın iç düğümleri <page/> <body/>aynı etki için a içine eklenemez mi? Yoksa bir şey mi kaçırıyorum?
Alan Storm

Bu yaklaşımı endişelerin ayrılması olarak düşünün. Birçok başka yerlerde dahil nerede Magento 2 bölünmüş sınıfları, konfigürasyon, düzenleri vs
Max Pronko

9

İle açmak Düzen dosyaları <layout></layout>olan sayfa düzenleri içinde bir sayfanın tel kafes beyan <body>örneği tek sütun düzeni veya iki sütunlu düzeni için, bölüm.

İle açmak düzeni dosyaları <page></page>olan sayfa yapılandırma Bir sayfa düzeni dosyasında tanımlanan tel kafes içerik eklemek dosyaları.

İşte bununla ilgili resmi doktor, lütfen geliştirilip iyileştirilemeyeceğini bize bildirin: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html


Yanıtınızda yaptığınız gibi , bu makalede<layout> bir ve biriyle birlikte açıldığını açıklarsanız, bunu anlamak çok daha kolay olacaktır . <page>
jamil

0

Fark ettiğim bir fark, çünkü vücudun içindeki bir sayfanın tel kafesidir , html'nin sadece bir kısmını ajax alabilirsiniz. Normalde bir denetleyiciye basarsanız, sayfanın tamamı etiketle başlar. Bu denetleyiciler, sayfa düzeni xml kullanan PageFactory tarafından oluşturulan sayfa nesnelerini döndürür. Ancak, filtre formu gibi ajax çağrısı ile dinamik olarak bazı phtml yüklemek istediğinizde, yardımcı olur. Magento_ImportExport varlık (ürün, müşteri) değiştiğinde dışa aktarma filtrelerini dinamik olarak değiştirir. Bu, magento'nun (adminhtml_export_getfilter.xml) ne zaman kullanıldığına bir örnektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.