请到magento技术学习网站:
控制器是模块开发系列和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源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!