繁体   English   中英

如何在布局XML中为我的Magento控制器定义块?

[英]How can I define block for my Magento controller in layout XML?

我有控制器,它具有以下代码:

class Company_ModuleName_NameController extends Mage_Core_Controller_Front_Action
{

    public function indexAction()
    {
        $this->loadLayout();     
        $this->renderLayout();
    }
}

然后我在config.xml中配置了布局XML。 现在,我想添加指向.phtml文件的块,当用户访问我的控制器时,该.phtml文件将显示给用户。

首先,您应该为控制器定义布局句柄:

像这样:

<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 } ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM