magento创建块时出错

magento创建块时出错,magento,Magento,我创建了一个新模块,在该模块中,我通过以下方法在IndexController.php中创建了一个块,该方法位于app/code/local/Ashfame/Helloblock/controllers/IndexController.php class Ashfame_Helloblock_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() {

我创建了一个新模块,在该模块中,我通过以下方法在
IndexController.php
中创建了一个块,该方法位于
app/code/local/Ashfame/Helloblock/controllers/IndexController.php

class Ashfame_Helloblock_IndexController extends Mage_Core_Controller_Front_Action {

    public function indexAction() {
        // this works fine
        $block = new Ashfame_Helloblock_Block_Helloblock();
        echo $block->toHtml();
    }

    public function layoutAction() {
        // this doesn't work
        $layout = Mage::getSingleton('core/layout');
        $block = $layout->createBlock('ashfame_helloblock/helloblock','root');
        var_dump( $block ); // this returns false
        echo $block->toHtml();
    }
}
我的Block类是
Ashfame\u Helloblock\u Block\u Helloblock
,位于
app/code/local/Ashfame/Helloblock/Block/Helloblock.php

class Ashfame_Helloblock_IndexController extends Mage_Core_Controller_Front_Action {

    public function indexAction() {
        // this works fine
        $block = new Ashfame_Helloblock_Block_Helloblock();
        echo $block->toHtml();
    }

    public function layoutAction() {
        // this doesn't work
        $layout = Mage::getSingleton('core/layout');
        $block = $layout->createBlock('ashfame_helloblock/helloblock','root');
        var_dump( $block ); // this returns false
        echo $block->toHtml();
    }
}
由于
layoutAction()
中的
$block
为false,PHP对非对象上的成员函数调用HTML()时抛出错误

调试时,我发现magento发现类名错误。它在
getGroupedClassName()
内部将类名计算为
mage\u Ashfame\u helloblock\u block


这里出了什么问题?

我想问题出在您的配置文件中。在
app/code/local/Ashfame/Helloblock/etc/config.xml
中,您应该有:

<config>
  ...
  <global>
    ...
    <blocks>
        <ashfame_helloblock>
             <class>Ashfame_Helloblock_Block</class>
        </ashfame_helloblock>
    </blocks>
  </global>
</config>

...
...
Ashfame_Helloblock_区块

你的app/code/local/Ashfame/Helloblock/etc/config.xml是什么样子的?很好地跟踪了类名映射。探险家的心在Magento开发中非常重要。@benmarks heh谢谢!我支持:)谢谢!就是这样,只是
需要
才能正常工作:)我收回这句话。当时一定是别的什么事。这需要小写,如示例代码块所示。