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

EOB*_*EOB 5 layout block magento

我对布局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>
Run Code Online (Sandbox Code Playgroud)

有人可以解释这些线的含义吗?可以在这里找到教程:这里

谢谢!

Dil*_*nga 15

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

<adminhtml_example_index></adminhtml_example_index>
Run Code Online (Sandbox Code Playgroud)

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

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <awesome before="Mage_Adminhtml">Super_Awesome_Adminhtml</awesome>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
Run Code Online (Sandbox Code Playgroud)

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

因此,如果url包含/ 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>
Run Code Online (Sandbox Code Playgroud)

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

<block>tag用于定义我们需要引用的块.<type>标签很重要.它指的是渲染此布局时应使用的正确块类(请记住,在Magento的MVC结构中,View包含Block类和phtml文件)

awesome/adminhtml_example这里,awesomeconfig.xml文件中提到的块配置名称.adminhtml_example是要使用的块类.

看到

<global>
    -----
    <blocks>
        <awesome>
            <class>Super_Awesome_Block</class>
        </awesome>
    </blocks>
</global>
Run Code Online (Sandbox Code Playgroud)

block标记下,定义了唯一的块名称(良好的命名约定将保留唯一性).然后可以将这些块的类路径标识为Super/Awsome/Block/.

现在已解决块配置名称.adminhtml_example是要使用的确切块类.块名称(awesome)之后的任何下划线都将转换为目录分隔符.

据此,块类的完整路径将是

[codepool]/Super/Awsome/Block/Adminhtml/Example.php
Run Code Online (Sandbox Code Playgroud)

班级名称就像

class Super_Awesome_Block_Adminhtml_Example extends ….
Run Code Online (Sandbox Code Playgroud)

如果我们有布局文件,我们可以在这里指定..然后该.phtml文件将使用上面的块类进行渲染

<reference name="root">
    <block type="page/html" name="root" template="simplepage.phtml" />
</reference>
Run Code Online (Sandbox Code Playgroud)

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


Ant*_*n S 5

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

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

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

进一步阅读我建议: