我有控制器,它有以下代码:
class Company_ModuleName_NameController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
然后我在config.xml中配置了布局XML。现在我想添加指向.phtml文件的块,当用户访问我的控制器时,该.phtml文件将显示给用户。
答案 0 :(得分:3)
首先,您应该为控制器定义布局句柄:
像这样:
<modulename_name_index>
</modulename_name_index>
您应该定义要显示的位置:内容,左,右,另一个块:
<modulename_name_index>
<reference name="content">
</reference name="content">
</modulename_name_index>
然后定义将显示的块:
<modulename_name_index>
<reference name="content">
<block type="module/blockname" name="blockname" template="templatedir/templatefile.phtml"/>
</reference name="content">
</modulename_name_index>
其中module / blockname是块的名称。在示例文件中应该是这样的:
公司/模块名/砌块/ Blockname.php。 你的config.xml也应该正确定义,所以magento明白,对于'module'的东西,它应该特别加载你的类。 像这样:
<global>
...
<blocks>
<module>
<class>Company_Module_Block</class>
</module>
</blocks>
...
</global>
更新1
如果您想简单地渲染一些内容,那么您可以使用Magento的默认块类:
core/template or Mage/Core/Block/Template
这就是你的xml文件的样子:
<modulename_name_index>
<reference name="content">
<block type="core/template" name="blockname" template="templatedir/templatefile.phtml"/>
</reference name="content">
</modulename_name_index>
但是如果您的.phtml文件中包含以下内容:
$this->getSomethingSpecificValueForCurrentDisplay()
这不起作用。另一方面,如果您的phtml中有非常简单的php,如下所示,则不需要自定义块。
<?php for(i = 0; i++; i< 10){ ?>
<?php echo "Hello mates" ?>
<?php } ?>