我想创建一个块并通过
将该块添加到我的模板中$this->_addContent($this->getLayout()->createBlock("device/device"))
现在,它没有显示任何内容。
要注意的是什么,以便我的块将被渲染(要知道的文件是什么?)
注意:
COMPANY NAME: Abc
MODULE NAME: Device
此外,createBlock(“device / device”)返回“false”
答案 0 :(得分:9)
传递给device/device
的{{1}}字符串是类别名。类别名为Magento开发人员提供了一种在不使用实际类名的情况下引用类的方法。这种间接允许一个类替换(或用Magento术语重写)另一个类,而不必更改任何实例化和使用该类的代码。
首先在模块的createBlock
文件中为您的类定义前缀,如下所示(注意:将此代码添加到任何现有标记中,而不是仅将其放在config.xml
的底部。 ):
config.xml
在为块构建类名时,xml的一部分是在别名之前的部分,并在生成类名时替换标记的内容。然后将/替换为_,并将类别名的其余部分附加到类名。因此,使用类别名<config>
<global>
<blocks>
<device>
<class>Abc_Device_Block</class>
</devicer>
</blocks>
</global>
</config>
和上述XML,将构建以下类名device/device
,Magento将在Abc_Device_Block_Device
中找到它。它将按照include_path中指定的顺序搜索文件夹,通常为Abc/Device/Block/Device.php
,然后是app/code/local
,然后是app/code/community
,最后是`lib。
相同的基本逻辑也适用于模型和辅助类。
Alan Storm's必不可少的CommerceBug扩展有一个很好的工具,用于测试模型/块/帮助器类别名在类名和文件位置方面的映射。
此方法的其他参数是一个名称,可用于从布局XML文件中引用块(并修改它),以及可在布局XML中找到的其他属性数组。
答案 1 :(得分:2)
这是一个很好的答案吉姆。添加一个点,优先级是