ошибка magento при создании блока - PullRequest
1 голос
/ 01 апреля 2012

Я создал новый модуль, в котором я создаю блок с помощью следующего метода в 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().

Что здесь не так?

1 Ответ

2 голосов
/ 01 апреля 2012

Я думаю, что проблема в вашем файле конфигурации. В app/code/local/Ashfame/Helloblock/etc/config.xml вы должны иметь:

<config>
  ...
  <global>
    ...
    <blocks>
        <ashfame_helloblock>
             <class>Ashfame_Helloblock_Block</class>
        </ashfame_helloblock>
    </blocks>
  </global>
</config>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...