magento中文开发手册开篇

上传人:第*** 文档编号:61714610 上传时间:2018-12-10 格式:DOC 页数:13 大小:43KB
返回 下载 相关 举报
magento中文开发手册开篇_第1页
第1页 / 共13页
magento中文开发手册开篇_第2页
第2页 / 共13页
magento中文开发手册开篇_第3页
第3页 / 共13页
magento中文开发手册开篇_第4页
第4页 / 共13页
magento中文开发手册开篇_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《magento中文开发手册开篇》由会员分享,可在线阅读,更多相关《magento中文开发手册开篇(13页珍藏版)》请在金锄头文库上搜索。

1、Magento(麦进斗)是这个星球上最强大的购物车网店平台。当然,你应该已经对此毫无疑问了。不过,你可能还不知道,Magento(麦进斗)同样是一个面向对象的PHP框架。你可以配合Magento(麦进斗)购物车程序强大的功能,开发动态WEB应用程序。 采用高端Magento(麦进斗)电子商务系统可订制对接企业ERP、CRM如:SAP NAV Salesforce Odoo 用友 金蝶 等,Magento(麦进斗)可对接淘宝、京东、Amazon、eBay、Wish、速卖通等电子商务销售平台,Magento(麦进斗)还可订制对接开发微信商城、移动电商APP。相较于老的ecshop构架,Magent

2、o(麦进斗)作为全球第一电商平台可提供完整核心源代码的电商解决方案,适合品牌企业、跨国企业、跨境电商企业。麦进斗科技提供上诉完整电商解决方案,欢迎咨询联系 麦进斗这是Magento中文开发手册的开篇,我们会在整个手册中介绍绝大部分Magento的开发框架特性。不要想在这片文章中立刻掌握所有的特性。这仅仅是个开始,但是足够让你在同行中鹤立鸡群了。 在这片文章中,你将了解到: Magento模块(Magento Modules)代码组织形式配置型MVC架构Magento控制器(Magento Controllers)基于URI的模型实例化(Context-based URI Model Loadi

3、ng)Magento模型(Magento Models)Magento助手(Magento Helpers)Magento布局(Magento Layouts)事件监听(Observers)Magento类重写(Class Overrides)总结开始之前,你可以试着看下Magento MVC模式的一个图形化直观体现。Magento_MVC.pdfMagento模块中的代码组织形式Magento通过将代码放入独立的模块进行组织。在一个典型的PHP MVC应用中,所有的控制器会被放在一个文件夹中,所有的模型会被放在另外一个文件夹里,等等。而在Magento中,文件是基于功能进行分组的,这种分组后

4、的代码块叫做模块。 Magento的代码: 举例来说,如果你想寻找Magento中关于付款的功能,你仅仅需要找到下面代码中的文件夹,就能获取所有的控制器,模型,助手,Blocks等。app/code/core/Mage/Checkout如果你想寻找Magento中关于Google Checkout的功能,也仅仅需要找到如下文件夹,即可获取所有你想要的信息。app/code/core/Mage/GoogleCheckout你的代码: 如果你想扩展Magento,千万不要想当然的去修改core文件夹中的文件,也不要将你自己的控制器,模型,助手或者Blocks放在Core文件夹中。所有对于Magen

5、to的扩展,都将在local文件夹中进行。app/code/local/Package(也可称为命名空间,当然这不是PHP手册中提到的命名空间)是唯一的命名,通过Package来标识你的公司,组织或个人。通过Package,世界范围内的Magento社区在创建模块扩展时,能够使用他们自己的Package名称,以避免与其他开发者有命名冲突。 创建一个新的模块时,你需要告诉Magento新模块的相关信息。可以通过添加一个XML文件在下面的目录中。app/etc/modules在这个目录中有两类xml文件,第一种用来开启独立的模块,以下列方式命名:Packagename_Modulename.xml

6、第二种文件用来从一个Package中开启多个模块,以下列方式命名:Packagename_All.xml配置型MVC系统Magento是一个配置型MVC(Configuration-based MVC)系统。另外一种MVC系统则是大部分PHP框架使用的,约定性MVC(convertion-based MVC)。 在约定型MVC系统中,如果你添加一个控制器,或者一个模型,只需要根据约定的内容,创建这个文件以及类即可,系统会自动识别它。 而在配置型MVC系统中,比如Magento,除了需要添加相应的文件及类之外,还需要明确的告诉系统该类的存在。在Magento中,每个模块都有一个config.xm

7、l文件。这个文件中包含了一个模块相关的配置信息。在运行时,所有模块的配置文件,都会被加载到一个巨大的配置文件树中(后面的文章会介绍如何查看这个配置树)。 比如,想在模块中使用模型。你需要添加类似下面的代码,来告诉Magento你会在这个模块中使用这个模型。 Packagename_Modulename_Model 当然,这种配置不仅限于模型,对于控制器,助手,Blocks,路由,事件句柄等都需要在该模块的config.xml中进行相关的配置。Magento控制器(Magento Controllers)在任何PHP系统当中,核心文件肯定是PHP文件。Magento也不例外,index.php是

8、Magento的核心文件。 不过,永远不要编辑index.php中的任何代码。在MVC系统中,index.php的左右大概有以下几项: 检测URL地址。根据路由规则,将访问的URL地址分发到控制器类中的方法。初始化控制器,并调用相应的动作方法。这一步骤叫做分发。Dispatching。这意味着Magento(或任何MVC系统)每一个有效的entry point都是控制器文件中的一个方法。一起来看下面这个URL:http:/ Front Name catalog 该URL的第一部分被称为Front Name。它用来指示Magento应该在哪个模块中寻找URL中的控制器。在这个例子中,catalo

9、g就是Front Name,对应于catalog模块。 Controller Name Category 第二部分指示Magento应该匹配的控制器。每个拥有控制器的模块都包含一个controllers的文件夹,用来存放该模块下的所有控制器。上述URL地址,匹配了下面这个控制器文件。app/code/core/Mage/Catalog/controllers/CategoryController.php其中的类定义格式大概为: class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action 在Mag

10、ento中,所有的控制器都继承自Mage_Core_controller_Front_Action类。 Action Name view 第三部分是一个action方法的名称。在此URL中,view便是一个action方法的名字。 class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action public function viewAction() Paramater/Value id/25 任何位于action方法名之后的路径,都会被认为是key/value形式传递的GET变量。那么在我们的例子

11、当中,id/25表示有一个值为25的$_GETid变量。 如前所述,如果你想让自定义模块使用控制器,你必须对它进行配置。下面是在模块中开启控制器的代码。 standard Mage_Catalog catalog 现在不清楚上述内容都是什么意思还没关系,但是注意catalog。这是用来关联模块与URL地址中frontname的。Magento核心代码选择将一个模块的名字与frontname一致,但这不是强制规定的。Multiple Routers上面提到的路由规则主要是针对Magento购物车程序(即你所能看到的前端)。如果Magento在URL中无法匹配到正确的控制器/动作,它会尝试使用针对

12、Admin程序(后台管理端)的另一套路由规则。如果依旧无法正确匹配,它会使用一个特殊的控制器Mage_Cms_IndexController。 CMS控制器会检查Magento内容管理系统中是否有内容需要输出,如果有内容输出,则读取该内容,如果找不到,则输出404页面。 例如,Magento默认的首页就是在使用CMS控制器。Context-Based URI 模型读取目前为止,我们已经建立了一个控制器以及一个方法,到实例化一个类做点什么的时候了。Magento提供了一种特殊的方式去实例化模型,助手以及Blocks,即使用Mage全局类提供的静态工厂方法。例如, Mage:getModel(ca

13、talog/product); Mage:helper(catalog/product); catalog/product字符串被称为Grouped Class Name。通常叫做URI。Grouped Class Name的第一部分用来指示该类存在于哪个模块当中。第二部分用来决定哪个类将被调用。 那么,上述例子中,catalog对应于app/code/core/Mage/Catalog模块,也就意味着我们的类名将以Mage_Catalog开头,然后根据调用的类型,将product类名加入到最后一部分。即, Mage:getModel(catalog/product); Mage_Catalo

14、g_Model_Product; Mage:helper(catalog/product); Mage_Catalog_Helper_Product;Magento 模型和现在的多数框架一样,Magento也提供ORM支持。ORM让你能够专注于数据,而非无尽的SQL语句。例如, $model = Mage:getModel(catalog/product)-load(27); $price = $model-getPrice(); $price += 5; $model-setPrice($price)-setSku(SK1231414); $model-save(); 在上面这个例子中,我们调用了“getPrice”和“setPrice”方法。然而,在Mage_Catalog_Model_P

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号