如何使用createBlock调用文件

时间:2013-08-21 12:54:22

标签: magento

我正在关注Alan Storm的No_Frills_Magento_Layout。我已经达到了一个观点,即我不能按照这本书的说法开展工作,所以我采取了另一种方式

以下是书籍方式,我收到错误

$layout = Mage::getSingleton(’core/layout’);
$block = $layout->createBlock('ts_nofrills/helloworld', 'root');
echo $block->toHtml();

//Fatal error: Call to a member function createBlock() on a non-object in 

下面是我的方式并生成.phtml文本

$main_block = new Ts_Nofrills_Block_Helloworld();
$layout = Mage::getSingleton(’core/layout’);
$block = $layout->createBlock($main_block, 'root');
echo $block->toHtml();

我的问题是随着本书继续这个例子的扩展,偏离示例并按照我的方式去做,我觉得我没有充分发挥潜力。

我想我已经错误地写了第一个参数,magento在createBlock函数中识别出它在我的例子中做错了什么?

我一直不愿意提出这个问题有两个原因:

1 - 我确定答案在书中(我找不到)

2 - 我确定这里已经提出了这个问题(我再一次看了但是找不到它)

=== EDIT ===

<global>
    <blocks>
        <Ts_Nofrills>
            <class>Ts_Nofrills_Block</class>
        </Ts_Nofrills>
    </blocks>
  ....
</global>

文件结构

  • TS
    • Nofrills
        • 的template.php
      • 控制器
        • IndexController.php
        • config.xml中

1 个答案:

答案 0 :(得分:1)

查看你应该拥有的全局节点中的etc / config.xml:

<blocks>
        <ts_nofrills>
            <class>Ts_Nofrills_Block</class>
        </ts_nofrills>
</blocks>

如果要使用php或layout xml创建块,则必须使用节点etc / config.xml块中的值作为命名空间,后跟/,然后将模块中的文件路径分隔开来通过下划线。