我正在关注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>
文件结构
答案 0 :(得分:1)
查看你应该拥有的全局节点中的etc / config.xml:
<blocks>
<ts_nofrills>
<class>Ts_Nofrills_Block</class>
</ts_nofrills>
</blocks>
如果要使用php或layout xml创建块,则必须使用节点etc / config.xml块中的值作为命名空间,后跟/
,然后将模块中的文件路径分隔开来通过下划线。