createBlock应该需要什么

时间:2012-06-21 23:05:41

标签: magento

我想创建一个块并通过

将该块添加到我的模板中
$this->_addContent($this->getLayout()->createBlock("device/device"))

现在,它没有显示任何内容。

要注意的是什么,以便我的块将被渲染(要知道的文件是什么?)

注意:

 COMPANY NAME: Abc
 MODULE NAME: Device

此外,createBlock(“device / device”)返回“false”

2 个答案:

答案 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)

这是一个很好的答案吉姆。添加一个点,优先级是

  1. 本地
  2. 社区然后来
  3. 核心,如果我没有错。