Magento 2请求流程概述

作者:Yaroslav Rogoza

有趣的是,了解Magento 2如何在“引擎盖下”工作,不仅适用于开发人员,也适用于使用该平台的所有人。不是每个人都有可能深入挖掘代码以检查细节。在这篇文章中,我们将以外行的方式提出Magento 2请求流程。

请求流通常表示从用户的浏览器经过某个URL到完全呈现的页面的请求生命周期。与其他每个Web应用程序一样,Magento有一个入口点 – 请求处理在平台端开始的地方。Magento标准请求的入口点是index.php文件或pub / index.php文件,具体取决于当前运行模式default / developer / production。无论您访问哪个页面,此文件都将成为请求流的一部分。此文件中的逻辑加载引导程序,然后创建并运行应用程序。引导程序负责自动加载和初始应用程序运行。自动加载是一种逻辑,允许将应用程序中的所有文件连接在一起,并使用另一个文件中的代码。初始应用程序执行意味着选择正确的应用程序部分来执行进一步的处Magento 2中的应用程序类型很少,例如Http(用于标准页面),Cron(用于运行定价过程,如价格规则计算),Shell(用于运行平台的不同shell命令)等。在这篇文章中我们正在审查标准的Http应用程序。

在初始过程中,我们有主要组件初始化:错误处理程序,对象管理器等。一旦主要组件已经注册,就会发生路由逻辑。路由系统尝试通过其URL识别请求,然后加载可以处理请求的平台的相应部分。路由流由前端控制器类控制。前端控制器类遍历系统中所有已注册的路由器,以尝试找到合适的路由器。开箱即用的Magento 2中注册的路由器很少:

  • 基础路由器
  • CMS路由器
  • UrlRewrite Router
  • 默认路由器
  • REST路由器

每个路由器都使用一组分配给当前路由器的控制器进行操作。控制器是最终的路由组件。几乎Magento中的每个URL都有一个相应的控制器 – 在系统初始化之后但在执行进一步的业务逻辑之前,请求应该出现的位置。
控制器协调应该在请求时执行的进一步动作。

我们以产品视图页面加载为例。在这种情况下,产品视图页面控制器(此页面和所有其他页面都有自己的控制器)执行以下操作集:

  • 从当前URL中提取类别ID,产品ID和其他选项。
  • 尝试使用产品的帮助程序启动产品。如果没有这样的产品 – 重定向到404页面。
  • 准备帮助页面呈现。
  • 使用视图组件呈现页面。

Magento中的助手是包含一些普遍操作的有用逻辑的类。在当前示例中,产品助手通过从数据库中获取产品来初始化产品。在Magento 2中,系统使用存储库来处理某些数据库实体,例如产品。存储库是一种允许在不同实体上执行基本操作的逻辑:从数据库获取实体,将实体保存到数据库,从数据库中删除实体等。存储库使用模型与数据库交互。Magento中的模型是包含用于处理数据库的低级逻辑的类。

Magento 2中的视图组件由Result Page类,Layout类,块类和模板表示。Page类负责从布局中进行最终内容呈现。Layout类包含有关页面组件的所有信息:容器,块,UI组件等.Block是一个类,它表示页面的单独功能和可视部分(标题,侧栏,页脚等)。

在此阶段,我们拥有将页面发送回客户端浏览器的所有必要数据。在控制器中的所有操作都已执行之后,它将有关呈现页面的信息发送回Application类(执行流程从其开始的同一个类)。最后,Application类将响应发送到输出(客户端的浏览器)。

请参阅下面的流程图,其中包含有关请求执行流程的摘要信息。

Magento 2请求流程图

我们希望这些信息可以帮助您更好地理解Magento 2中的请求生命周期。请在下面的评论中随意提出您的问题。

您也可能对sky8g.com有兴趣:

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

上一篇: Magento 1 中的Ajax验证

下一篇: Nginx配置Magento 1

登录 评论
avatar