我对布局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
谢谢!
答案 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
块中可用
进一步阅读我建议: