2012-02-01 33 views
5

Tôi có một số câu hỏi về tệp xml bố cục được đặt trong ứng dụng \ design \ adminhtml \ default \ default \ layout.Hiểu tệp xml bố cục Magento (tham chiếu, khối, ...)

Trên một số hướng dẫn, nó có cấu trúc này:

<layout> 
    <adminhtml_example_index> 
     <reference name="content"> 
      <block type="awesome/adminhtml_example" name="example" /> 
     </reference> 
    </adminhtml_example_index> 

    <adminhtml_example_edit> 
     <reference name="content"> 
      <block type="awesome/adminhtml_example_edit" name="example_edit" /> 
     </reference> 
    </adminhtml_example_edit> 
</layout> 

Ai đó có thể xin giải thích những gì các dòng nghĩa là gì? Bạn có thể tìm thấy hướng dẫn tại đây: here

Cảm ơn!

Trả lời

5

xử lý bố trí được ánh xạ tới bộ điều khiển MVC vì vậy mong đợi xử lý của bạn

<adminhtml_example_index> được sử dụng trong trang điều khiển adminhtml/example/index

<reference name="content"> có nghĩa là các khối hoặc tài liệu tham khảo khác bên những các khối sẽ có sẵn trong các khối content trên các mẫu chủ đề của bạn

để đọc thêm tôi đề xuất:

13

XML cấu trúc dựa trên Magento dường như chút bối rối và khó chịu ở phần đầu nhưng nó nổi tiếng rằng khả năng cuối cùng mạnh mẽ và tùy biến ...

<adminhtml_example_index></adminhtml_example_index> 

Thẻ này đề cập đến [bộ định tuyến] [c ontroller] [action] Bộ định tuyến là tên được xác định duy nhất cho một công văn cụ thể. Từ ví dụ bạn đã cung cấp, trong thẻ quản trị của tệp config.xml, chúng tôi có thể tìm thấy tên bộ định tuyến adminhtml.

<admin> 
    <routers> 
     <adminhtml> 
      <args> 
       <modules> 
        <awesome before="Mage_Adminhtml">Super_Awesome_Adminhtml</awesome> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

Dưới bộ định tuyến đó là cài đặt mô-đun liên quan đến bộ định tuyến này.

Vì vậy, nếu url chứa /admin/example/[index], magento sẽ tìm thấy các bộ định tuyến đúng là <adminhtml> sau đó sẽ tìm thấy bộ điều khiển tên example và tìm ra hành động đúng đó là trong trường hợp này index(/ admin/example/sẽ được phái đến action index mặc định)

<adminhtml_example_index> 
    <reference name="content"> 
     <block type="awesome/adminhtml_example" name="example" /> 
    </reference> 
</adminhtml_example_index> 

Trong tập tin bố trí, cho Router controller action kết hợp, cập nhật bố trí được xác định. Ở đây, bản cập nhật sẽ được áp dụng cho khối chính có tên là content chứa phần nội dung trang.

<block> thẻ được sử dụng để xác định khối mà chúng tôi cần tham chiếu. <type> thẻ là quan trọng.Nó đề cập đến các lớp khối đúng nên được sử dụng khi vẽ bố trí này (Hãy nhớ rằng trong cấu trúc MVC của Magento View bao gồm cả hai lớp Block và file phtml)

Trong awesome/adminhtml_example đây, awesome là tên cấu hình khối nêu tại config.xml tệp. adminhtml_example là lớp khối được sử dụng.

Xem

<global> 
    ----- 
    <blocks> 
     <awesome> 
      <class>Super_Awesome_Block</class> 
     </awesome> 
    </blocks> 
</global> 

Dưới thẻ block, một tên khối độc đáo được định nghĩa (quy ước đặt tên tốt mà vẫn duy trì sự độc đáo). Sau đó, đường dẫn lớp cho các khối này có thể được xác định là Super/Awsome/Block/.

Tên cấu hình khối hiện đã được giải quyết. adminhtml_example là lớp khối chính xác được sử dụng. Bất kỳ dấu gạch dưới sau tên khối (tuyệt vời) sẽ được chuyển thành bộ phân cách thư mục.

Theo đó, đường dẫn đầy đủ của lớp khối sẽ

[codepool]/Super/Awsome/Block/Adminhtml/Example.php 

Tên lớp sẽ như thế nào

class Super_Awesome_Block_Adminhtml_Example extends …. 

Nếu chúng ta có tập tin bố trí chúng ta có thể xác định nó ở đây .. sau đó tệp .phtml sẽ được hiển thị bằng cách sử dụng lớp khối trên

<reference name="root"> 
    <block type="page/html" name="root" template="simplepage.phtml" /> 
</reference> 

Hy vọng thứ sẽ giúp .. Xin lỗi nếu có gì không rõ ràng…

+1

Giải thích là tuyệt vời. Giữ nó lên. :) – Coder

Các vấn đề liên quan