MVC 结构

MVC 代表模型 - 视图 - 控制器。将数据访问,业务逻辑和用户界面分开的任何应用程序都称为 MVC。可以有两种类型的 MVC:基于约定和基于配置。例如,cakePHP 是基于约定的,即你只需按照核心系统的说明操作即可在几行内准备好模块。Magento 是基于配置的,即你需要为模块的配置文件指定每一件事,以使其工作。Magento 有 Controller(用于路由),块,模型和模板文件。Magento 的 MVC 如何工作:

  1. 当你输入 URL(类似于 http://mysite.com/frontname/controller/method/param1/value1/param2/value2)时 ,此 URL 被一个名为 index.php 的 PHP 文件截获,该文件实例化 Magento 应用程序
  2. Magento 应用程序实例化 Front Controller 对象
  3. 此外,前端控制器实例化 Router 对象(在模块的 config.xml 中指定,全局标记)
  4. 现在,路由器负责匹配URL 中的前缀
  5. 如果找到匹配,它会在 URL 中看到控制器名称和方法名称,最终会被调用。
  6. 现在,根据动作名称(方法名称)中的内容,执行它。如果在其中调用任何模型,则控制器方法将实例化该模型并在其中调用所请求的方法。
  7. 然后控制器操作(方法)实例化 Layout 对象,该对象调用为此操作(方法)名称指定的块(每个控制器操作名称都有与之关联的块和模板文件,可以在 app / design / frontend 或 adminhtml /中找到 namespace / module / layout / module.xml 文件,布局文件的名称(module.xml)可以在该模块的 config.xml 中找到,在布局更新标签中)。
  8. 模板文件(.phtml)现在为任何方法请求调用相应的块。因此,如果在 .phtml 文件中编写$ this-> methodName,它将检查 module.xml 文件中关联的块文件中的 methodName
  9. 块包含 PHP 逻辑。它引用了来自 DB 的任何数据的模型。
  10. 如果 Block,Template 文件或 Controller 需要从/向数据库获取/设置一些数据,他们可以直接调用 Model,如 Mage::getModel(‘modulename / modelname’)。