【问题标题】:How can I define block for my Magento controller in layout XML?如何在布局 XML 中为我的 Magento 控制器定义块?
【发布时间】:2011-12-02 08:01:21
【问题描述】:

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

class Company_ModuleName_NameController extends Mage_Core_Controller_Front_Action
{

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

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

【问题讨论】:

    标签: php magento magento-1.4


    【解决方案1】:

    首先你应该为你的控制器定义布局句柄:

    像这样:

    <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 是你的块的名称。在示例文件中应该是这样的:

    公司/模块名称/块/块名称.php。 您的 config.xml 也应该正确定义,以便 magento 理解使用“模块”的东西它应该特别加载你的类。 像这样的:

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

    【讨论】:

    • 如果我只想查看 phtml 文件,为什么我必须拥有 Blockname.php 文件?以及该块文件应该做什么/包含什么。
    猜你喜欢
    • 2014-04-13
    • 1970-01-01
    • 2010-11-09
    • 2013-06-05
    • 2014-10-13
    • 2016-06-23
    • 1970-01-01
    • 2016-02-15
    • 2015-02-23
    相关资源
    最近更新 更多