我正在开发我的第二个 Magento 模块,它应该检索一些数据并呈现一个包含它的块。这样的块将被其他页面使用。
目前,我几乎已经完成了整个模块,但是由于某种原因,当我调用控制器方法时,该块没有呈现。我放了一些调试信息,我可以看到块的__construct()
方法被正确调用了,但是模板似乎没有被加载并且返回的页面是空白的。
这是块的代码,我从另一个模块复制并修改:
class Company_CustomerData_Block_CustomerSummary extends Mage_Core_Block_Template {
const _TEMPLATE = 'customerdata/customersummary.phtml';
public function __construct() {
// This method is called correctly
parent::_construct();
$this->setTemplate(self::_TEMPLATE);
}
}
customersummary.phtml文件位于app/design/frontend/base/default/template/customerdata中,这应该是正确的位置(或者,至少,我认为是这样)。其内容如下:
It works!
只是一些纯文本。没有标签,没有代码,什么都没有。我不介意它是静态文本,一旦完成,它将填充数据。
如果需要,这里是控制器的代码(我删除了检索数据的部分,因为它们没有任何区别):
public function dashboardAction() {
// Customer Data to render in the block
$CustomerData = array(); // Data is retrieved elsewhere
$this->getResponse()->setBody(
$this->getLayout()->createBlock('customerdata/customersummary')
->toHtml()
);
}
我可能做错了什么?恐怕我又犯了一些愚蠢的错误,但我真的看不出来。
最后还有两个问题:
- 如何将我在 Controller 中检索的数据传递给模板?具体来说,变量
$CustomerData
. - 块呈现后,如何从页面中呈现其内容?该块应该返回一个包含一些东西的内容,我想在客户仪表板中呈现它,就在已经存在的信息下方。
在此先感谢您的帮助。