2012-04-01 50 views
1

我創建了一個新的模塊,其中,我創建通過以下方法中的塊IndexController.php其在app/code/local/Ashfame/Helloblock/controllers/IndexController.phpmagento的錯誤創建塊

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_Helloblock_Block_Helloblock並且在app/code/local/Ashfame/Helloblock/Block/Helloblock.php

由於$blocklayoutAction()是錯誤的,PHP會拋出一個錯誤Call to a member function toHtml() on a non-object

在調試時,我發現magento正在搞清楚類名錯誤。它找出getGroupedClassName()內的類名稱mage_Ashfame_helloblock_block

這裏有什麼問題?

+0

你的app/code/local/Ashfame/Helloblock/etc/config.xml是什麼樣的? – nachito 2012-04-01 18:54:10

+1

通過類名映射進行良好的跟蹤。探險家的心在Magento開發中非常重要。 – benmarks 2012-04-01 20:49:24

+0

@benmarks heh謝謝!我第二個:) – Ashfame 2012-04-02 04:10:33

回答

2

我認爲問題出在你的配置文件中。在app/code/local/Ashfame/Helloblock/etc/config.xml你應該有:

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

謝謝!這樣做,只是''需要爲''才能工作:) – Ashfame 2012-04-01 19:46:27

+0

我把這個評論回來了。當時肯定是別的東西。如示例代碼塊所示,這需要小寫。 – Ashfame 2012-04-08 20:30:12