这是一个基本问题,但过去几天让我失眠了。
我用控制器,phtml模板和块类编写了一个自定义模块,如下所示: 应用程序/代码/本地/华翰/的HelloWorld /座 Helloworld.php(Huahan_Helloworld_Block_Helloworld扩展Mage_Core_Block_Template) 应用程序/代码/本地/华翰/的HelloWorld /控制器 IndexController.php(定义索引控制器的indexAction) 应用程序/设计/前端/基/默认/模板/华翰/的HelloWorld helloworld.phtml(定义视图) 应用程序/设计/前端/碱/默认/布局 helloworld.xml(文件名" helloworld.xml"在etc / config.xml中指定)
我知道Magento中的每个请求处理都是从控制器及其操作方法开始的。
在布局helloworld.xml中,我在块标记
中指定模板文件<helloworld_index_nihao>
<block type="core/template" name="just_an_arbitary_name" output="toHtml" template="huahan/helloworld/nihao.phtml"/>
</helloworld_index_nihao>
</layout>
因此控制器在处理请求时知道要使用哪个模板。
问题是如何让Magento知道Huahan_Helloworld_Block_Helloworld是我希望它在渲染任何输出之前加载的块类?
如果有关于Magento xml的详细文档?我总是对Magento xml语法的复杂性和随意性感到沮丧
Magento的版本是ver.1.9.0.1
config.xml如下
<?xml version="1.0"?>
<config>
<modules>
<huahan_helloworld>
<version>
0.1.0
</version>
</huahan_helloworld>
</modules>
<frontend>
<routers>
<!-- the <helloworld> tagname appears to be arbitrary, but by
convention is should match the frontName tag below-->
<helloworld>
<use>standard</use>
<args>
<module>Huahan_HelloWorld</module>
<frontName>helloworld</frontName>
</args>
</helloworld>
</routers>
<layout>
<updates>
<helloworld>
<file>helloworld.xml</file>
</helloworld>
</updates>
</layout>
</frontend>
<global>
<blocks>
<helloworld>
<class>Huahan_Helloworld_block</class>
</helloworld>
</blocks>
</global>
</config>
提前致谢。我真的很感激你在这里读到它。
答案 0 :(得分:1)
块type
属性是配置块使用的类的项。不鼓励使用type
中的完整班级名称。
Magento中的类别名系统的目的是在您自己的模块中扩展/覆盖核心/模块功能时允许您的灵活性。
如果每个人都使用了类别名,那么您可以使用自己的类替换/覆盖别名,并“注入”您的行为而不是原始行为。它是一种解耦代码以允许扩展。
在您的模块声明中,您必须指定一个块前缀,例如:
<blocks>
<huahan_helloworld>
<class>Huahan_Helloworld_Block</class>
</huahan_helloworld>
</blocks>
根据Magento惯例,<class>
部分应为huahan_helloworld
或helloworld
。
由于这些配置和其他Magento约定,您的阻止类型应分别为huahan_helloworld/helloworld
或helloworld/helloworld
。
答案 1 :(得分:0)
我明白了。
布局xml文件是我应该工作的地方。
只需更改type =&#34; core / template&#34;的值在helloworld.xml的块项中输入=&#34; Huahan_Helloworld_Block_Helloworld&#34;
然后就完成了!
我讨厌Magento,&#34;核心/模板&#34;从任何视角看起来都不像是一个类名!