Я создал новый модуль, в котором я создаю блок с помощью следующего метода в 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();
}
}
Мой класс блоков равен Ashfame_Helloblock_Block_Helloblock
и находится в app/code/local/Ashfame/Helloblock/Block/Helloblock.php
Поскольку $block
в layoutAction()
равно false, PHP выдает ошибку Call to a member function toHtml() on a non-object
При отладке я обнаружил, что magento неправильно определяет имя класса.Имя класса определяется как mage_Ashfame_helloblock_block
внутри getGroupedClassName()
.
Что здесь не так?