createBlock应该需要什么

Pra*_*man 1 magento

我想创建一个块并通过它将该块添加到我的模板中

$this->_addContent($this->getLayout()->createBlock("device/device"))
Run Code Online (Sandbox Code Playgroud)

现在,它没有显示任何东西.

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

注意:

 COMPANY NAME: Abc
 MODULE NAME: Device
Run Code Online (Sandbox Code Playgroud)

此外,createBlock("device/device")返回"false"

Jim*_*ran 9

device/device传递给的字符串是createBlock类别名.类别名为Magento开发人员提供了一种在不使用实际类名的情况下引用类的方法.这种间接允许一个类替换(或用Magento术语重写)另一个类,而不必更改任何实例化和使用该类的代码.

首先在模块config.xml文件中为类定义前缀,如下所示(注意:将此代码添加到任何现有标记中,而不是仅将其放在底部config.xml):

<config>
    <global>
        <blocks>
            <device>
                <class>Abc_Device_Block</class>
            </devicer>
        </blocks>
    </global>
</config>
Run Code Online (Sandbox Code Playgroud)

在为块构建类名时,xml的一部分是在别名中的/之前的部分,并在生成类名时替换标记的内容.然后将/替换为_,并将类别名的其余部分附加到类名.因此,使用类别名device/device和上面的XML,将构建以下类名Abc_Device_Block_Device,Magento将在其中找到它Abc/Device/Block/Device.php.它会搜索文件夹中包含路径,这通常是指定的顺序app/code/local,那么app/code/community,其次是app/code/core最后`库.

相同的基本逻辑也适用于模型和辅助类.

Alan Storm的必不可少的CommerceBug扩展有一个很好的工具,可以根据类名和文件位置来测试模型/块/帮助器类别名映射到的位置.

此方法的其他参数是一个名称,可用于从布局XML文件中引用块(并修改它),以及可在布局XML中找到的其他属性的数组.