0

我正在关注 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 - 我确定这个问题已经在这里被问过(我再一次看过但找不到它)

===编辑===

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

文件结构

  • TS
    • 没有多余的装饰
      • 堵塞
        • 模板.php
      • 控制器
        • 索引控制器.php
      • ETC
        • 配置文件
4

1 回答 1

1

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

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

当您想使用 php 或布局 xml 创建块时,您必须使用节点 etc/config.xml 块中的值作为命名空间/,然后使用下划线分隔的模块内文件的路径。

于 2013-08-21T13:14:46.500 回答