我按照这里的官方教程http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-3-magento-controller-dispatch
当我尝试将一个块附加到另一个块时,我遇到了一个问题。我使用以下代码(在教程中使用非常相似 - 2)并且它不起作用。 $block->toHtml()
返回空字符串,但$block
包含一个大数组。
class Custom_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
$block = $this->getLayout()->createBlock('newsletter/subscribe');
$this->getLayout()->getBlock('content')->append($block);
$this->renderLayout();
}
}
如果我使用XML文件来做同样的事情,一切都很顺利。
答案 0 :(得分:1)
newsletter/subscribe
块扩展了Mage_Core_Block_Template,但未在其构造函数中设置默认的* .phtml文件。请参阅http://svn.magentocommerce.com/source/branches/1.7/app/code/core/Mage/Newsletter/Block/Subscribe.php。
因此,在渲染布局之前,您需要执行$block->setTemplate("newsletter/subscribe.phtml");
之类的操作。