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