控制器如何在magento 2中加载布局

时间:2016-11-02 10:54:25

标签: layout controller frontend magento2

我在magento 2中开发了一个样本模块,它只打印了hellow world.there只有一个控制器和一个布局文件

控制器

  <?php
namespace MageClass\First\Controller\Test;

use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\App\Action\Context;

class Helloworld extends \Magento\Framework\App\Action\Action
{

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

布局文件

    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">        
    <referenceBlock name="content">
        <block 
            template="helloworld.phtml" 
            class="Akhil\Test\Block\Helloworld" 
            name="helloworld_test_helloworld">
        </block>
    </referenceBlock>
</page>  

这里我怀疑这个布局和控制器是如何链接的。当我通过浏览器访问控制器时,默认情况下这个布局正在加载。它如何链接布局和控制器。

我想在我的模块中添加另一个布局和控制器。如何在访问控制器时加载所需的布局

1 个答案:

答案 0 :(得分:2)

  

在Magento 2控制器和布局文件中与它们链接在一起   命名惯例。

所以在这里你创建了你的控制器文件: app / code / MageClass / First / Controller / Test / Helloworld.php

您的布局文件名是:
app / code / MageClass / First / View / forntend / layout / helloworld_tes t_helloworld.xml

  

布局文件名始终取决于控制器名称及其操作   名。

布局文件的命名约定是 - modulename_controllername_actionname.xml

  

示例1:

此处您的模块名称为“ Helloworld ”,控制器名称为“测试”,您的操作名称为“ Helloworld ”。

所以你的布局文件名应该是 - helloworld_test_helloworld.xml(modulename_controllername_actionname.xml)

现在同样的事情,如果你想创建新的控制器和新的布局,那么你需要再次使用上述约定

  

示例:2

我在这里创建第二个控制器“ Test1 ”并执行“ Helloworld1 ”。

所以你的控制器路径应该是 - app / code / MageClass / First / Controller / Test1 / Helloworld1.php

所以这里你的布局文件名应该是 - helloworld_test1_helloworld1.xml(modulename_controllername_actionname.xml)

更多参考资料引用此链接 - http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html