怎么在Magento 2中创建控制器controller

本文详细介绍了在Magento 2中创建控制器的过程,包括理解控制器的工作原理、创建控制器文件夹、声明动作类、设置路由以及注意事项。通过遵循步骤,读者可以学习如何为自己的模块添加前端控制器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请到magento技术学习网站:

magento1

控制器是模块开发系列和PHP MVC框架的重要组成部分。该功能就是接收到的请求、处理和呈现页面。

如果浏览不顺畅请到原文章出处:https://www.sky8g.com/technology/971/

请注意可能会提示风险,这是优快云网站设置的问题,如果文章内的链接不是他们的网址,都会对用户提示有风险,请点击继续访问,本网站全部文章为免费技术分享,请放心访问,无需担心。

请点击此处查看完整文章:https://www.sky8g.com/technology/971/
此篇文章是由SKY8G网作者原创,禁止抄袭。

 

在Magento 2控制器中,模块的Controller文件夹中有一个或多个文件,其中这些文件都包含execute()方法的类动作。此方法是action的入口方法。

有两种不同的控制器,它们是前端控制器和后端控制器。它们通常与工作流相似,但管理控制器略有不同。在管理控制器中有一个检查权限的方法,它调用表单键。

控制器controller是如何工作的?

它接收来自终端用户(浏览器或comamnd行)的请求,例如:

1

http://example.com/route_name/controller/action

 

  • oute_name是在routing .xml中设置的唯一名称。
  • controller是controller文件夹中的文件夹。
  • action是一个用execute方法处理请求的类。

前端控制器是控制系统的重要组成部分之一。

(Magento\Framework\App\FrontController), 它总是接收请求然后路由控制器,通过route_name动作让我们举一个路由请求的例子:

 

1

2

3

4

5

foreach ($this->_routerList as $router) {

try {

$actionInstance = $router->match($request);

}

如果找到控制器类的操作,将运行execute()方法。

如何创建控制器?

要创建控制器,需要在模块的controller文件夹中创建一个文件夹,并在其中声明一个action类。例如,我们为模块 Pfay_Contacts 创建了一个索引控制器和一个索引操作:

步骤1: 首先创建模块的文件夹

从magento目录的根目录转到/app/code文件夹。然后创建一个文件夹“Pfay”和另一个文件夹“Contacts”。

名称空间:

您的模块位于Pfay名称空间中。您将在这个文件夹中“存储”将要创建的模块。

注意,永远不要修改magento2的“核心”文件,即文件夹/app/code/Magento,否则如果你想要更新平台,就会遇到大问题。

在magento2下声明它的模块

现在您已经创建了模块的文件夹,您必须向magento“声明”模块。为此,我们将创建 module.xml文件。模块/etc文件夹中的module.xml文件如下:

1

2

3

4

5

6

7

8

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">

    <module name="Pfay_Contacts" setup_version="2.0.0">

        <sequence>

            <module name="Magento_Cms"/>

        </sequence>

    </module>

</config>

步骤2: 我们也将创建文件“ registration file”。进入app/code/Pfay/Contacts,创建 registration.php是这样的:

1

2

3

4

5

6

<?php

\Magento\Framework\Component\ComponentRegistrar::register(

    \Magento\Framework\Component\ComponentRegistrar::MODULE,

    'Pfay_Contacts',

    __DIR__

);

当您启动以下命令时:

1

php bin/magento setup:upgrade

你会看到这条线

1

'Pfay_Contacts' => 1

步骤3: 在文件夹app/code/Pfay/Contacts/Controller中,创建一个文件夹测试,并在下面创建索引 Index.php文件如下:

1

2

3

4

5

6

7

8

9

<?php

namespace Pfay\Contacts\Controller\Test;

class Index extends \Magento\Framework\App\Action\Action

{

    public function execute()

    {

        die('test index');

    }

}

步骤4: 创建访问控制器的路由, 为了通过前端访问我们的模块,您必须为模块的前端创建路由。这里我们想通过url www.magento2.lan/contacts/访问模块。我们将在etc文件夹中创建一个“ frontend”文件夹,然后插入 routes.xml文件。 文件routes.xml必须是这样的:

1

2

3

4

5

6

7

8

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">

    <router id="standard">

        <route id="contacts" frontName="contacts">

            <module name="Pfay_Contacts" />

        </route>

    </router>

</config>

我们使用“ standard”路由器,允许访问我们的magento2模块的前端部分!我们添加带有id“contacts”的路由来识别它,以及frontName“contacts”,这是您访问前端模块的关键url。在此路径中,然后使用name属性定义模块元素,该属性包含“名称空间”+“模块名称”。

注意:如果你创建后台路由则id应该是admin。

步骤5: 关于控制器的组织,

当从模块的根声明时,我们有文件  /Controller/Test/Index,在本教程的后续步骤中,我们将告知控制器测试的Action Index。我们会通过url访问它

1

http//www.magento2.lan/contacts/test/index  或者 http//www.magento2.lan/contacts/test 都可以访问

注意在访问之前:要做的以下几点工作

 

1

2

3

4

5

6

7

8

php bin/magento cache:clean

php bin/magento module:enable  --clear-static-content  Pfay_Contacts   开启模块

php bin/magento module:status

php bin/magento setup:upgrade

php bin/magento setup:di:compile

php bin/magento setup:static-content:deploy -f

 

完成以上步骤才能正式访问,谨记!

如果你想了解怎么在controller里面调用helper类的方法,请访问这里 www.sky8g.com/technology/1957/

希望以上对你有帮助,如遇到不懂得地方请留言。谢谢你的阅读。

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值