2012-02-01 64 views
5

我有一些關於放置在app \ design \ adminhtml \ default \ default \ layout中的佈局xml文件的問題。瞭解Magento佈局xml文件(參考,塊,...)

在一些教程,它有這樣的結構:

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

可有人請解釋一下這些線是什麼意思?教程可以在這裏找到:here

謝謝!

回答

13

的XML 的Magento的基礎結構,似乎在一開始卻有點混亂,討厭它的衆所周知的是,最終能力強和可定製...

<adminhtml_example_index></adminhtml_example_index> 

此標籤是指[router] [c ontroller] [action] 路由器是特定調度的唯一標識名稱。從您提供的示例中,在config.xml文件的管理標籤下,我們可以找到路由器名稱adminhtml

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

在該路由器下是與該路由器相關的模塊設置。

所以如果URL包含/管理/例子/ [指數],Magento的會找到正確的路由器是<adminhtml>然後將找到一個名爲example控制器,並找到正確的行動是在這種情況下index(/管理/示例/將被分派到缺省索引動作)

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

在佈局文件中,路由器控制器動作組合,佈局更新定義。在這裏,更新將應用於名爲content的主塊,該主塊包含頁面內容部分。

<block>標記用於定義我們需要引用的塊。 <type>標籤很重要。它指的是在渲染這個佈局(還記得Magento的MVC結構中的視圖由兩個功能塊類和PHTML文件)

awesome/adminhtml_example這裏的時候使用正確的塊類,awesome是中提到的塊配置名稱config.xml文件。 adminhtml_example是要使用的塊類。

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

block標籤,唯一的名字被定義(良好的命名約定將保持獨特性)。然後這些塊的類路徑可以被識別爲Super/Awsome/Block/

塊配置名稱現在已解決。 adminhtml_example是要使用的確切塊類。塊名(真棒)之後的任何下劃線將被轉換爲目錄分隔符。

根據是,該塊類的全路徑將是

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

類的名字會像

class Super_Awesome_Block_Adminhtml_Example extends …. 

如果我們有,我們可以在這裏指定它的佈局文件..那麼.phtml文件將被渲染使用上面的塊類

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

Hope th是幫助..對不起,如果有什麼不清楚...

+1

解釋是一流的。保持。 :) – Coder 2013-06-04 08:52:50