如何在Magento 2中创建自定义控制器Controller

Magento 2中的控制器Controller

作为位于模块控制器controller文件夹中的类,控制器controller负责特定的URL或URL组。在Magento 2中,控制器controller是MVC流程的重要组成部分。与Magento 1相比,Magento 2中的控制器controller是结构化的,它们以不同的方式工作。当Magento 1控制器controller有多个动作action时,Magento 2控制器controller只有一个由前端控制器controller调用的执行方法。对于每个动作action,我们都有一个带有execute方法的控制器controller类。路由器匹配控制器动作类时调用Execute方法,它负责返回对前端控制器的响应。控制器有两种类型:前端和管理员。它们具有类似的工作流程,但管理控制器具有其他权限检查方法

在Magento 2中创建自定义控制器controller

要创建自定义控制器,我们需要执行以下步骤:

第1步:创建routers.xml文件

etc / frontend中为前端控制器创建routes.xml,或者为admin控制器创建etc / adminhtml文件夹。
例:

etc / frontend / routes.xml – 前端的路由配置; 为了演示,我们将匹配“magentofronttest”作为frontname(域名后的url的一部分 – 例如:www.magentotest.net/magentofronttest/)

第2步:自定义控制器controller配置

routes.xml中为控制器添加自定义配置,例如:
– router:id – standard(frontend)/ admin 
– route:id – 您的唯一路由ID 
– route:frontName – url中的唯一名称,这是url的第一部分在基础路由器中(www.yourwebsite.com/frontName/actionpath/actionclass/)
frontName – 在routes.xml配置中设置,并具有将由路由器匹配的唯一值
action path – Controller文件夹中的文件夹名称,默认为index
action class – 我们称之为Controller的动作类,默认为索引
– module name- 模块名称
例:

etc / adminhtml / routes.xml – 为admin配置路由,为了演示,我们将匹配“magentoadmintest”作为frontname(/ admin /之后的url的一部分)

第3步:创建动作控制器controller 

按照上面的url结构创建动作类:
Controller / Actionpath / Actionclass.php

现在我们将为两个控制器配置创建动作类。在前端让我们为url siteurl / magentoronttest / demonstration / sayhello /创建动作路径和动作类。您可以在Controller文件夹中看到我们需要Demonstration文件夹(这称为动作路径),在该文件夹中我们需要Sayhello.php控制器动作类:

Controller / Demonstration / Sayhello.php

对于管理员控制器,让我们匹配url siteurl / admin / magentoadmintest / demonstration / sayadmin /。为此,我们需要Controller / Adminhtml中的Demonstration文件夹,并且在该动作类中我们需要创建Sayadmin.php

控制器/ Adminhtml /示范/ Sayadmin.php

请注意,默认情况下_isAllowed将返回true,并且要创建自定义权限,您必须在该方法下添加check。为了演示,我们将保留默认值,以便用户可以访问该控制器。

注意:  添加新控制器后,从Magento root中的控制台刷新所有内容:

 

 

 

 

 

如果有不懂的地方请留言,SKY8G网站编辑者专注于研究IT源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!

上一篇: Magento 2如何获取模块,控制器,动作和路由器名称

下一篇: 第3章逻辑:做出决定并重复自己

登录 评论
avatar