了解Magento布局xml文件(引用,块,...)

时间:2012-02-01 08:16:23

标签: magento layout block

我对布局xml文件有一些疑问,该文件位于app \ design \ adminhtml \ default \ default \ layout中。

在某些教程中,它具有以下结构:

<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

谢谢!

2 个答案:

答案 0 :(得分:14)

Magento 的基于XML的结构在开始时似乎有点令人困惑和恼人,但众所周知最终具有强大的功能和可定制性......

<adminhtml_example_index></adminhtml_example_index>

此标记是指 [路由器] [控制器] [操作] 路由器是特定分派的唯一标识名称。从您给出的示例中,在 config.xml 文件的管理标记下,我们可以找到路由器名称adminhtml

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

在该路由器下面是与此路由器相关的模块设置。

因此,如果网址包含 / admin / example / [index] ,magento将找到正确的<adminhtml>路由器,然后找到名为example的控制器并查找在这种情况下的正确操作index (/ admin / example /将被分派到默认索引操作)

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

在布局文件中,对于路由器控制器操作组合,将定义布局更新。在此处,更新将应用于名为content的主块,其中包含页面内容部分。

<block>标记用于定义我们需要引用的块。 <type>标记非常重要。它指的是在渲染此布局时应该使用的正确块类(请记住,在Magento的MVC结构中,View包含Block类和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是要使用的确切块类。块名称​​(awesome)之后的任何下划线都将转换为目录分隔符。

根据它,块类的完整路径将是

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

希望这会有所帮助..对不起,如果有什么不清楚的话......

答案 1 :(得分:5)

布局处理程序映射到MVC控制器,所以期待你的处理程序

<adminhtml_example_index>将在adminhtml / example / index控制器页面中使用

<reference name="content">表示这些块中的块或其他引用将在主题模板的content块中可用

进一步阅读我建议: