Magento Model vs Block vs Controller等

swl*_*020 8 magento

我看了看谷歌,但找不到一个网站,解释每个6模块子文件夹是什么.我通常很擅长在谷歌上找东西,但是这个一直没有提出任何问题.

有人可以解释Magento模块(块,控制器等,Helper,Model,sql)中每个子文件夹之间的差异吗?

Ian*_*Ian 28

简而言之:

Block负责呈现内容(来自前端,后端,电子邮件等的所有内容).如果内容正在某个地方显示,则可能是一个块.

控制器负责处理通过URL发出的所有请求.如果你点击网址http://www.example.com/catalog/product/view/id/9/,你可以点击controllers/ProductController.php中目录模块,然后点击viewAction()方法.如果您点击Magento中的URL,请求将通过一个或多个控制器.

etc包含模块的任何配置xml文件.它们负责从ACL(访问控制列表)到如何访问块/模型等到系统配置设置的所有内容.一些示例文件:

  • adminhtml.xml - 处理大部分管理员方面.它处理ACL和菜单控制.该文件是可选的.
  • config.xml - 处理模块的所有基本配置.此文件定义了如何/在何处查找帮助程序,块,模型,资源,默认模块设置,重写,观察者,前端布局文件以及一系列其他配置.该文件是模块运行所必需的.
  • System.xml - 包含插入到站点的"系统" - >"配置"部分的所有系统配置.
  • 还有其他一些,但它们比你要求的更高级.

助手 - 这些文件是"助手".它们包含模块通用的功能或可由其他模块访问的功能.这些功能的一个功能是提供翻译.此外,Data.php是此处包含的默认帮助程序.如果您有系统配置,则需要Data.php才能使系统配置正确显示.

模型 - 这些是您的数据对象.例如,产品或类别是模型.它们提供数据管理功能.它们与模型文件夹中包含的Resource文件夹连接以访问数据库,而Collections则获取对象集合.

sql - 这些是您的设置脚本.如果正确配置了模块,则可能需要对数据库进行一些更改:向表添加表,向产品添加属性或自定义配置.


我建议你看看http://alanstorm.com/category/magento

他有很多样本,教程和其他好的技巧,是一个更完整的起点.

  • 我做了一个错字,块应该是Block."控制器"应该是唯一的复数.我知道复数与单数没有功能性原因,这是Magento开发团队的设计决策.块/帮助器/模型大写,表示它们是可以由您在代码中实例化的对象.您可以实例化Block,Helper和Model,但不能在etc,controllers或sql中实例化任何内容.并不是说您无法访问config.xml中的配置设置,但无法实例化它. (2认同)

Ren*_*art 5

理解每个功能的最佳方法是查看核心模块.

Helpers - Magento的Helper类包含实用程序方法,允许您对对象和变量执行常见任务.例如:$ helper = Mage :: helper('catalog')

- 每个块对象将呈现特定的HTML位.块对象通过PHP代码和PHP .phtml模板文件的组合来完成此操作.Blocks对象旨在与Magento系统交互以从Models中检索数据,而phtml模板文件将生成页面所需的HTML

控制器 - 在任何PHP系统中,主要的PHP入口点仍然是PHP文件.Magento没有什么不同,那个文件是index.php.

Magento模型 - Magento与大多数框架一样,提供了一个对象关系映射(ORM)系统.ORM使您无法编写SQL并允许您纯粹通过PHP代码(和其他核心业务逻辑)操作数据存储区

etc - 这是您放置配置文件(config.xml,system.xml和/或adminhtml.xml)的地方,告诉magento您的模块可以访问的内容以及有关您的自定义模块的其他配置(请参阅示例)

sql - 这是您放置安装脚本的地方(例如,向您的magento db添加一个新表)

看看@ Magento for Developers:第1部分 - Magento简介