Sự khác biệt giữa các trang của YouTube và cách bố trí trên mạng của Windows trong Magento 2


18

Trong Magento 2, một số bố cục xử lý các tệp XML mở bằng

<page.../>

thẻ gốc. Những người khác mở với

<layout.../>

thẻ gốc. Việc sử dụng một trong các thẻ trên có đưa ra bất kỳ sự khác biệt về chức năng nào đối với bố cục xử lý tệp XML không? Hay đây là trang phục cửa sổ tinh khiết? Hoặc một cái gì đó ở giữa.

Hai ví dụ

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

Câu trả lời:


13

Những vấn đề này do cấu hình XSD khác nhau. Các

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

tuyên bố nói rằng chúng tôi muốn sử dụng bố cục với định nghĩa XSD được cung cấp trong

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

Trong layout_generic.xsdtệp, nó cung cấp định nghĩa cho layoutnút có genericLayoutloại phần tử.

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

Do đó, tệp bố cục đã được XSD xác thực khi tải xml. Ngoài ra, nó làm nổi bật tất cả các nút và thuộc tính nút có thể có trong tệp layout.xml.

Tương tự với page_configuration.xsdđịnh nghĩa cho <page />nút. XSD này mô tả các nút có thể được sử dụng để mô tả trang.

Hy vọng nó giúp.


2
mũ giúp một số, +1 cho điều đó, nhưng vẫn không rõ tại sao sự khác biệt tồn tại. Là bố trí chỉ là di sản chưa được chuyển đổi? Hoặc sự phân biệt tồn tại vì một lý do tốt.
Alan Storm

1
Nó tồn tại vì một lý do. Chỉ cần tưởng tượng sự linh hoạt khi thay vì tạo tệp phtml hoặc html và nếu bạn cần một số sửa đổi cho tệp hiện có, bạn phải sao chép nó, bạn có cách khai báo để xác định một trang. Với các phần tử html, phần thân và phần đầu. Bố cục - nó chỉ là một lớp cấu hình khác, khác, trong đó bạn opera với các phần nội dung như khối, thành phần, thùng chứa, v.v.
Max Pronko

1
Không chắc chắn tôi thấy sự khác biệt - các nút bên trong của <layout/>tệp có thể được bao gồm trong <page/> <body/>cùng một hiệu ứng không? Hay tôi đang thiếu một cái gì đó?
Alan Storm

Xem xét phương pháp này như một sự tách biệt của mối quan tâm. Bao gồm nhiều nơi khác, nơi Magento 2 phân chia các lớp, cấu hình, bố cục, v.v.
Max Pronko

9

Các tập tin bố trí mở bằng <layout></layout> những bố cục trang mà bố wireframe của một trang bên trong <body>phần, ví dụ bố trí một cột hoặc bố trí hai cột.

Các tập tin bố trí mở bằng <page></page> là các tệp cấu hình trang thêm nội dung vào khung dây được xác định trong tệp bố cục trang.

Đây là tài liệu chính thức về nó, vui lòng cho chúng tôi biết nếu nó có thể được cải thiện: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html


Điều này sẽ được dễ dàng hơn rất nhiều để hiểu nếu bạn làm rõ, như bạn đã làm trong trả lời của bạn, đó là một mở đầu bằng <layout>và một với <page>trên bài viết này .
Jamil

0

Một điểm khác biệt mà tôi nhận thấy là, bởi vì khung dây của một trang bên trong cơ thể , bạn có thể lấy lại một phần của html. Thông thường nếu bạn nhấn một bộ điều khiển, bạn sẽ có toàn bộ trang bắt đầu bằng thẻ. Các bộ điều khiển này đang trả về các đối tượng trang được tạo bởi PageFactory sử dụng kiểu bố trí xml. Nhưng khi bạn muốn tải động một số phtml với lệnh gọi ajax như dạng bộ lọc, sẽ hữu ích. Magento_ImportExport thay đổi động các bộ lọc xuất khi thực thể (sản phẩm, khách hàng) thay đổi. Đây là một ví dụ về thời điểm magento sử dụng (adminhtml_export_getfilter.xml).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.