搜索
首页后端开发php教程为 Magento 开发自定义模块

Magento 自定义模块开发是任何 Magento 开发或 Magento 项目的核心部分,因为在任何阶段您可能希望将自己的功能/模块集成到现有的 Magento 项目中。

在本系列中,我将介绍 Magento 自定义模块开发的详细信息。

如果您想进一步开发 Magento,请查看 Envato Market 上各种有用的 Magento 扩展。

为 Magento 开发自定义模块

在本系列中,我指的是 Magento 社区版 1.7,尽管是自定义版本 所有版本的 Magento 中的模块结构都是相同的。在开始实际的模块开发之前,让我们快速了解 Magento 的基本结构。

每当您安装新的 Magento 时,您都会注意到以下 Magento 目录结构:

为 Magento 开发自定义模块

Magento MVC 结构简介

与 Joomla、CakePHP、CodeIgniter 等任何其他主要框架一样,Magento 也遵循基于 MVC 的架构,尽管这与核心 PHP MVC 架构略有不同。在这里,我将通过与简单的 PHP MVC 架构进行比较来解释 Magento 架构的差异。

PHP MVC架构

在典型的 MVC 模式中,应用程序的流程如下所示:

  1. 有一个主要入口点 - index.php - 整个应用程序路由机制从这里确定。
  2. 根据此路由机制和请求的 URL 模式,应用将调用适当的控制器。
  3. 然后控制器调用适当的视图。
  4. 最后,视图文件从模型文件收集数据并显示数据。

Magento MVC 架构

Magento 的 MVC 架构在 MVC 模式的基础上添加了几层,但应用程序的基本控制流程如下:

  1. 有一个主入口点 - index.php - 整个应用程序将从这里初始化。
  2. 将根据请求的 URL 调用适当的控制器。
  3. 控制器定义页面并加载这些页面的布局文件。
  4. 布局文件告诉控制器要使用哪些块文件。
  5. 块文件从模型和帮助程序文件中收集数据并将其传递到模板文件。
  6. 模板文件接收数据并呈现 html。

最初,这可能很难理解,因为它包含一些额外的层。为了更熟悉控制流程,让我们开发一个自定义的“Hello World”模块。

开始使用模块之前

  • 我假设您已经拥有版本 1.7 或 1.7+ 的 Magento 工作副本(否则版本在现阶段并不重要)
  • 禁用缓存。 要禁用缓存,请转至 Magento 管理面板 > 系统 > 缓存管理 > 从左侧复选框中选择所有缓存类型 > 选择操作:从右上角下拉列表中禁用 > 单击提交。

Magento 模块的结构

代码池

Magento 包含三种类型的代码池,Magento 的所有自定义模块和核心模块都驻留在其中。

  1. 核心池包含默认情况下随 Magento 安装一起提供的所有核心模块。这些模块由 Magento 开发人员编写。建议不要修改这些模块,因为每当您升级 Magento 安装时,所有核心模块都将被覆盖,并且您的修改将会丢失。
  2. 社区池包含由第三方程序员开发并通过 Magento Connect 安装的所有模块(即自定义模块)。这些模块通常扩展核心模块并提供自己的功能,这些功能通常可以在 Magento 中的任何地方使用。
  3. 本地池包含将用于特定项目但不会在 Magento Connect 中读取的所有自定义模块

因此,我们有两种池选择:社区池或本地池。由于我们正在开发自己的项目,因此我们将使用本地池,尽管使用社区池也没有限制。

结构

Magento 模块由以下组件组成:

  • 包含用于在模板中显示数据的函数。
  • 模型包含模块的业务逻辑。
  • 资源模型包含用于数据库交互的函数。
  • 控制器定义页面布局并阻止文件,并在请求网址时加载。
  • etc包含 XML 格式的配置文件,它告诉 Magento 模块有多少个文件以及模块如何交互。
  • 帮助程序包含用于定义常见业务逻辑(例如图像调整大小、验证)的函数。这些函数可以在 Magento 应用程序的任何地方使用
  • sql包含用于创建、修改或删除 SQL 表的 SQL 脚本。

模块命名

我们需要为我们的模块命名。一般来说,Magento 模块名称由两部分组成:_。为 Magento 模块命名的最佳做法是选择 <code class="inline"><namespace></namespace> 作为作者或公司名称,并选择 <module></module> 作为作者或公司名称,并选择

作为实际模块名称。🎜

根据这些命名约定,我为我们的模块指定了 Chiragdodia_Mymodule 名称。我们将在本系列中引用这个名称。

代码设置和配置

 让我们根据上述结构创建目录。转到 Magento 安装目录,然后导航到 app/code/local  并创建如下所示的目录。

为 Magento 开发自定义模块

下一步,我们将通过在 app/etc/modulesapp/etc/modules 目录中创建配置文件 Chiragdodia_Mymodule.xml 目录

中创建配置文件 Chiragdodia_Mymodule.xml 来配置并激活我们的模块。

该目录包含所有模块的配置文件。active 标签中,我们指定了 true

<?xml version="1.0"?>
<config>
    <modules>
        <Chiragdodia_Mymodule>
        <active>true</active>
        <codePool>local</codePool>
        </Chiragdodia_Mymodule>
    </modules>
</config>
该文件将告诉 Magento 我们模块的位置。在 来启用我们的模块。如果到目前为止一切都正确,那么您将在

Magento 管理面板 > 系统 > 配置 > 高级 > 高级 > 禁用模块输出

列表中找到您的模块。从这里您可以启用和禁用您的模块。

入门:开发

接下来我们将创建模块配置文件。该文件将告诉 Magento 有关我们模块的所有信息。这包括我们的模块包含多少个文件、什么类型的文件(模型、帮助程序、数据库类)等等。app/code/local/Chiragdodia/Mymodule/etc  并创建一个 config.xml 转到 app/code/local/Chiragdodia/Mymodule/etc  并创建一个 config.xml

 

将包含以下内容的文件

<?xml version="1.0"?>
<config>
    <modules>
        <Chiragdodia_Mymodule>
            <version>0.1.0</version>    <!-- Version number of your module -->
        </Chiragdodia_Mymodule>
    </modules>
    <frontend>
        <routers>
            <mymodule>
                <use>standard</use>
                <args>
                    <module>Chiragdodia_Mymodule</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>
    </frontend>
</config>
<module></module>让我们逐行了解每个标签。这里,第一个标签是

<frontend></frontend> 标签将告诉 Magento 有关调度的控制器的信息。在 <frontend></frontend> 标记内,我们定义了 <routers></routers>,它包含我们模块的名称和版本。在更新模块时版本号非常重要。

<mymodule></mymodule> 标签中,我们在 <module></module> <frontname></frontname> 中的标签和前端名称。通过使用前端名称,我们可以在前端访问我们的模块,例如 yoursitename.com/index.php/mymodule/index ,它告诉 Magento 如何通过路由机制访问我们的控制器。

<mymodule></mymodule> 标签中,我们在 yoursitename.com/index.php/mymoduleyoursitename.com/index.php/mymodule/index

app/code/local/Chiragdodia/Mymodule/controllers  并创建文件 IndexController.php<frontname></frontname> 中的标签和前端名称。通过使用前端名称,我们可以在前端访问我们的模块,例如 yoursitename.com/index.php/mymodule/index 通过调用

Magento 将查找模块控制器的索引操作文件。因此,我们需要创建控制器文件。

转到 app/code/local/Chiragdodia/Mymodule/controllers

 yoursite.com/index.php/mymodule/index 并创建文件 IndexController.php  包含以下内容。

请注意,在 Magento 中,每个文件的名称和类名称都区分大小写。在创建文件和类时,请务必小心命名您的作品,这一点非常重要。

<?php
class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        echo "Hello tuts+ World";
    }
}

现在打开 URL  Mage_Core_Controller_Front_Action ,其中包含在URL路由中使用的所有方法。 Magento 类名反映了类文件的位置。因此,类 Mage_Core_Controller_Front_Action它将打印 “Hello tuts+ World”。 太棒了 - 我们终于完成了第一个 hello world 模块。 控制器调度

这里我们扩展了类Chiragdodia_Mymodule_IndexController。 Magento 控制器的命名方式应反映 (<module>tag)_(Action Controllername)(keyword Controller).</module> 

Mage_Core_Controller_Front_Action
     
  • ,其中包含在URL路由中使用的所有方法。 Magento 类名反映了类文件的位置。因此,类 Mage_Core_Controller_Front_Action  位于位置 Mage > Core > Controller > Front > Action.phpChiragdodia_Mymodule(我们已在 config.xml 查看我们的控制器的类名称,即 b>
  • 控制器名称
  • tag = Controller 中定义了此标签)

Chiragdodia_Mymodule_IndexController

操作 = 索引 yoursite.com/index.php/frontendname/actionControllername/actionmethod操作控制器后跟

关键字🎜 🎜 🎜根据此模式,我们的控制器的名称是 🎜🎜 🎜🎜🎜现在查看遵循以下路由模式的 URL 模式🎜🎜
  • 前端名称 = mymodule
  • actionControllername = 索引
  • actionmethodname = 索引

根据此网址模式,我们模块的网址为 yoursite.com/index.php/mymodule/index/index。您还可以使用 yoursite.com/index.php/mymodule 访问它,因为只要您未指定 actionControlleractionmethod 名称,Magento 就会加载默认情况下的索引控制器和索引操作。

现在让我们再创建一个操作:testAction 。

<?php
class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        echo "Hello tuts+ World";
    }
    public function testAction()
    {
        echo "test action";
    }
}

我们可以使用 URL yoursite.com/index.php/mymodule/index/test 访问 testAction。 如前所述

  • 前端名称 = mymodule
  • actionControllername = 索引
  • actionmethodname = 测试

这就是控制器在 Magento 中的工作原理。

一开始,一次理解所有内容可能很困难,因此我已将所有源代码包含到此模块中,以便您可以在将其用作指南的同时查看它并实现自己的工作。

下一步是什么?

在下一部分中,我们将通过创建布局和块文件来填充模块中的一些布局。我们将了解布局文件在 Magento 中如何工作以及块在 Magento 上下文中扮演什么角色。

在此之前,请创建您自己的模块,并让我知道任何给您带来麻烦的事情。

以上是为 Magento 开发自定义模块的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP行动:现实世界中的示例和应用程序PHP行动:现实世界中的示例和应用程序Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:轻松创建交互式Web内容PHP:轻松创建交互式Web内容Apr 14, 2025 am 12:15 AM

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python:比较两种流行的编程语言PHP和Python:比较两种流行的编程语言Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP的持久相关性:它还活着吗?PHP的持久相关性:它还活着吗?Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP的当前状态:查看网络开发趋势PHP的当前状态:查看网络开发趋势Apr 13, 2025 am 12:20 AM

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP与其他语言:比较PHP与其他语言:比较Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP与Python:核心功能PHP与Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP:网络开发的关键语言PHP:网络开发的关键语言Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境