视频在youtube网站国内访问不了,可以使用翻墙软件查看。
视频地址:www.youtube.com/embed/682p52tFcmY@autoplay=1

下面是视频文字介绍:

Magento 2系统整体结构是建立在模块的基础上。通常,创建定制的第一步是构建模块。

要创建模块,需要完成以下步骤:

  1. 创建模块文件夹
  2. 创建 etc/module.xml 文件.
  3. 创建 registration.php 文件.
  4. 运行 bin/magento setup:upgrade脚本安装新模块
  5. 检查模块是否正常工作

让我们详细地看一下这些步骤。

创建模块文件夹

Magento 2模块文件夹可以创建在两个地方: app/code 和 vendor 文件夹

根据Magento 2已安装,核心模块可以位于 vendor/magento/magento-*文件夹 或 app/code/Magento/ 文件夹

您应该为您的新模块选择哪些位置?

如果为特定项目构建模块,最好选择应用app/code文件夹并提交到项目的存储库中。

如果你要构建一个可重用的扩展,最好使用composer来创建它,并将你的模块放在 vendor/<YOUR_VENDOR>/module-something 文件夹。

在Magento 2每个模块的名称由两部分组成–vendor和模块本身。换句话说,模块分为vendor,所以你需要定义vendor和模块名称。在这个例子中,让我们的vendor名称“Learning”和“firstunit”模块。

让我们创建文件夹 app/code/Learning 和这个文件夹里面放一个文件夹:FirstUnit。如果您使用命令行,代码:

  1. cd 到根文件夹
  2. mkdir app/code/Learning
  3. mkdirapp/code/Learning/FirstUnit

确保您有权限在安装中创建文件和文件夹

下一步, 你需要创建 etc/module.xml 文件。 此文件需要模块存在。

此文件包含以下信息:

  • 模块名称
  • 模块版本
  • 模块依赖

模块名称定义的文件夹我们刚刚创建的,因为在Magento 2类名称必须遵循的文件夹结构。因为我们创建了文件夹Learning/FirstUnit, our module name will be Learning_FirstUnit 所有属于这个模块的类将从 Learning\FirstUnit – 示例: Learning\FirstUnit\Observer\Test.

模块版本表示数据库架构和数据的当前版本,并用于升级。 例如,假设您决定在模块中修改表的架构。
你怎么能确保在所有部署代码的情况下会发生这种变化?通过直接SQL查询修改数据库将不起作用。相反,Magento
2已经安装和升级的每一个模块的脚本(可选)。这些脚本包含修改数据库架构或数据的命令。跟踪是否执行脚本或不使用Magento
2模块版本。每次执行新的数据库更改时,您将实现模块的新版本并更改相应的版本 module.xml. Magento的保存在数据库的当前模块的版本,如果数据库中的一个值与 module.xml 不匹配, 它将执行升级代码。

依赖。如果一个模块依赖于另一个模块,module.xml 文件将有一个特殊声明,定义当前模块依赖的模块列表。在这个例子中,我们将使我们的模块依赖magento_catalog。

使用以下命令行代码,创建文件夹 app/code/Learning/FirstUnit/etc:

mkdir app/code/Learning/FirstUnit/etc

然后把下面的代码:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Learning_FirstUnit" setup_version="0.0.1"> <sequence>
<module name="Magento_Catalog"/> </sequence>
</module>
</config>

请注意,在指定的xml文件中:

  • 模块名称: Learning_FirstUnit (基于我们创建的文件夹)
  • 版本: 0.0.1 (我们的模块的初始版本)
  • 依赖: Magento_Catalog. 我们可以有多重依赖。在这种情况下, 我们会把<module name=”..” /> 序列节点下的节点。

创建registration.php 文件

每个模块必须有这个文件,它告诉Magento如何定位模块。继续我们的例子,创建文件app/code/Learning/FirstUnit/registration.php。然后把下面的内容放进去:

<?php \Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE, 'Learning_FirstUnit',
__DIR__
);

registration.php 是所有模块都遵循相同模式的标准化文件。

唯一不同的是模块名,在我们的例子中是Learning_FirstUnit

运行 “setup:upgrade” 命令

运行此命令使您的新模块主动通知Magento的存在。

php bin/magento setup:upgrade

它应该呼应大量的输出,其中一行应该是Learning_FirstUnit. 验证此行代码是否存在。

检查新模块是否处于激活状态

到目前为止,我们还没有添加任何有用的代码到我们的模块-它仍然是空的(因此无形的)。 为了验证它已被确认,检查文件 app/etc/env.php. 它有一个自动生成模块的列表是活跃的。

手动更改此列表!

cat app/etc/env.php | grep Learning_FirstUnit

采用这些步骤,你可以成功地创建Magento 2新模块。

查看原文

Magento 2开发教程 - 创建新模块的更多相关文章

  1. Magento 2开发教程 - 如何添加新产品属性

    添加产品属性是一种在Magento 1 和 Magento 2最受欢迎的业务. 属性是解决许多与产品相关的实际任务的有力方法. 这是一个相当广泛的话题,但在这个视频中,我们将讨论添加一个下拉类型属性到 ...

  2. cocos2d-x -3.81+win7+vs2013开发环境创建新的项目

    cocos2d-x -3.81+win7+vs2013开发环境创建新的项目 1.准备阶段 (1) vs2013下载及安装 (2)cocos2d-x 3.8.1下载及解压 (3)python下载及安装( ...

  3. Magento入门开发教程

    Modules->模块 Controller->控制器 Model->模型 Magento是这个星球上最强大的购物车网店平台.当然,你应该已经对此毫无疑问了.不过,你可能还不知道,M ...

  4. 03-移动端开发教程-CSS3新特性(下)

    1. CSS3动画 1.1 过渡的缺点 transition的优点在于简单易用,但是它有几个很大的局限. transition需要事件触发,所以没法在网页加载时自动发生. transition是一次性 ...

  5. Odoo 二次开发教程(五)-新API的介绍与应用

    [关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装 ...

  6. XAF应用开发教程(五)验证模块

    数据验证是应用程序开发中使用频率最高的功能模块,本节详细介绍一下XAF中如何使用验证模块. XAF 验证模块内置了下面的一些验证规则: 验证规则类型 说明 RuleCombinationOfPrope ...

  7. 02-移动端开发教程-CSS3新特性(中)

    1. 新的背景 背景在CSS3中也得到很大程度的增强,比如背景图片尺寸.背景裁切区域.背景定位参照点.多重背景等. 1.1 background-size设置背景图片的尺寸 cover会自动调整缩放比 ...

  8. 01-移动端开发教程-CSS3新特性

    1. 移动端开发课程概述 移动互联网的兴起,让移动端的开发迅速蹿红.对于前端开发者来说,移动端的开发已经占据了他们大部分工作时间.接下来老马带大家一起学习移动端开发的相关前端开发技术. 这边课程内容包 ...

  9. FlowPortal-BPM——创建新模块

    一.设置webconfig (1)数据源设置 添加所有所用到数据库 (2)修改企业信息 二.Main.ashx——添加新的功能选项卡 new { id = "EXECUTE", t ...

随机推荐

  1. droup

    Oracle Drop表并未直接删除 drop table xx purge   drop表 执行drop table xx 语句     drop后的表被放在回收站(user_recyclebin) ...

  2. 工作流2013 assign to问题

    根据您的确认, 该问题已经通过我们所提供的方案进行修改后测试通过, 问题解决. 以下为该问题的产生原因: SharePoint 2013使用的默认认证机制与2007不一样,  2007使用的是Wind ...

  3. 201621123012《Java程序设计》第12次学习总结

    作业12-流与文件 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车 ...

  4. [Objective-C语言教程]开发环境设置(2)

    如果要安装自己的Objective-C编程语言编程环境,则需要在计算机上安装文本编辑器和GCC编译器. 1. 文本编辑器 文本编辑器用于编写程序代码.一些常见的编辑器如:Windows Notepad ...

  5. luogu4383 [八省联考2018]林克卡特树(带权二分+dp)

    link 题目大意:给定你 n 个点的一棵树 (边有边权,边权有正负) 你需要移除 k 条边,并连接 k 条权值为 0 的边,使得连接之后树的直径最大 题解: 根据 [POI2015]MOD 那道题, ...

  6. mask layer的遮罩层

    1. layer层 mask 遮罩效果 //渐变层 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.fr ...

  7. ListView-电影列表

    import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, ListView } from ...

  8. 带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)

    微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服 ...

  9. SpringBoot入门(IDEA篇)(三)

    一.什么是JPA JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate.TopLink等. 二.Mysql数据库示例 1.在app ...

  10. Linux串口驱动程序设计

    1. 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. (1)串口终端(/dev/ttyS*):串口终端是使用计算机串口连接的终端设备.Linux把每 ...