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谢谢!我支持:)谢谢!就是这样,只是
需要
才能正常工作:)我收回这句话。当时一定是别的什么事。这需要小写,如示例代码块所示。