一、Magento 2 的部署配置
1.部署配置的目的
Magento 2的部署配置由你的模块的安装及环境配置:
<Magento安装目录>/app/etc/config.php
, 其中包含已安装的模块、主题和语言包的列表-
<Magento安装目录>/app/etc/env.php
, 其中包含环境设置,如:- 数据库连接设置
- 缓存存储设置
- 启用的缓存类型
- 您的加密密钥
- 网络路由参数(基URL,Magento管理URI)
- 文件系统路径
config.php
和 env.php
被称为Magento 2的 部署配置 因为他们安装期间创建和启动Magento 2所需的配置。
Magento 2部署配置取代 Magento 1.x的local.xml
不像其他的Module(模块)配置文件,Magento 2的部署配置加载到内存时,Magento 2的初始化,不与任何其他文件合并,并不能扩展。
2.部署配置的详细信息
config.php
和 env.php
返回一个多维数组
Magento\Framework\App\DeploymentConfig只提供对这些部分的访问,但不允许您扩展它们。
(1)管理已安装的模块
config.php
列出您已安装的组件(模块、主题和语言包)。Magento提供了命令行和基于Web的工具来管理组件(安装,卸载,启用,禁用,或升级)。
例如:
- 卸载组件: bin/magento setup:uninstall
- 启用或禁用组件: bin/magento module:enable, bin/magento module:disable
config.php
代码片段 :
return array (
'modules' =>
array (
'Magento_Core' => 1,
'Magento_Store' => 1,
'Magento_Theme' => 1,
'Magento_Authorization' => 1,
'Magento_Directory' => 1,
'Magento_Backend' => 1,
'Magento_Backup' => 1,
'Magento_Eav' => 1,
'Magento_Customer' => 1,
...
),
);
值 1
或 0
指示是否启用或禁用模块.
禁用模块不是由Magento应用公认的;换句话说,他们不参与合并的配置,在依赖注入,事件,插件,等等。禁用模块不修改店面或管理员,不影响路由。
(2)环境配置
下表提供了有关 env.php
中代码片段的详细信息及其结构。.
片段 | 键 | 结构 |
---|---|---|
Database | db | |
Resources | resource | |
Session 存储 | session | |
Admin URL path | backend | |
Cache storage | cache | |
Installation date | install | |
Encryption key | encrypt | |
Cache types | cache_types | |
Message queues | queue | |
二、Module(模块)配置文件
1.Magento 2 Module(模块)配置文件概述
Magento 1.x版本的config.xml配置文件的任务现在分成几个文件,分布在各个模块的目录。Magento 2的多个配置文件的负载需求只有当模块请求一个特定的配置类型。
您可以使用这些文件,来自定义模块的特定功能。
多个模块可以声明同一文件
以下是本主题中常用的术语:
Configuration object(配置对象)
Magento 2的库或者类负责定义和验证配置类型. 例如, 配置对象 config.xml
是 Magento\Framework\App\Config的配置对象
Configuration stage(配置阶段 )
阶段被定义为 primary, global, 和 area. 每个阶段确定配置类型何时加载并与相同的命名配置类型合并
Configuration scope(配置范围)
与配置阶段互补,范围定义了配置类型模型. 例如, adminhtml
是与其他模块一起加载的后台区域范围 adminhtml
配置 .
2.配置加载和合并
本节讨论如何配置和加载配置文件。
(1).Magento 2 如何加载配置文件
Magento 2按照以下顺序加载配置文件(所有的路径都是相对于你的Magento 2安装目录):
- 主要配置 (
app/etc/di.xml
). 此文件是用来引导Magento 2. - 从全局配置模块 (
<您的组件基础目录>/<vendorname>/<component-type>-<component-name>/etc/*.xml
). 从所有模块收集某些配置文件并将它们合并在一起。. - 模块的特定区域配置(
<组件基础目录>/<vendorname>/<component-type>-<component-name>/etc/<area>/*.xml
). 从所有模块收集配置文件并将它们合并到全局配置中。某些特定区域的配置可以覆盖或扩展全局配置。
<组件基础目录>
是您的组件位于的基本目录. 典型值是app/code
或vendor
相对于Magento 2安装目录。<vendorname>
是组件的vendor名称;例如,Magento 2的vendor名称magento
.-
<component-type>
是下列之一:module-
: 扩展或模块.theme-
: 主题.language-
: 语言包.
目前,主题位于
<Magento 2 安装目录>/app/design/frontend
或<Magento 2 安装目录>/app/design/adminhtml
<component-name>
: 定义的组件名称composer.json
.
(2).配置文件合并
在配置文件中的节点进行合并的基础上完全合格的XPath,它有一个特殊的属性$idAttributes
宣称它的标识符定义数组。对于同一父节点下嵌套的所有节点,此标识符必须唯一。
Magento 2的合并方法如下:
- 如果节点标识符相等(或没有定义标识符),则节点中的所有基本内容(属性、子节点和标量内容)将被重写。
- 如果节点标识符不相等,则该节点是父节点的新子节点。
- 如果原始文档具有多个具有相同标识符的节点,则会引发错误,因为无法区分标识符。
配置文件合并后,生成的文档包含原始文件中的所有节点。
5.配置类型、对象和接口
下面提供部分的有关配置类型及其相应的配置对象和可用于对象的接口的信息:
- 配置类型和对象
- 配置接口
(1)配置类型和对象
Configuration file | Description | Stage | Configuration object |
---|---|---|---|
config.php 和 env.php | 部署配置 | Loads into memory when Magento initializes | Has no object, cannot be customized |
config.xml | System configuration | primary, global | \Magento\Framework\App\Config |
di.xml | 依赖注入 configuration | primary, global, area | \Magento\Framework\ObjectManager\Config |
events.xml | Event/observer configuration | global, area | \Magento\Framework\Event |
routes.xml | Route configuration | area | Magento\Framework\App\Route\Config |
(2)配置接口
您可以使用配置接口下的配置文件Magento\Framework\Config. 如果创建新的配置类型,也可以使用这些接口。
Magento\Framework\Config
提供以下接口:
- Framework\Config\ConverterInterface, 将xml转换为配置的内存数组表示形式。
- Framework\Config\DataInterface, 它在指定范围内检索配置数据。
- Framework\Config\FileResolverInterface, 它标识要读取的文件的位置
\Magento\Framework\Config\ReaderInterface
-
Framework\Config\ReaderInterface, 它从存储器中读取配置数据,并选择从其中读取的存储。
三、创建或扩展配置类型
1.扩展配置类型
若要扩展现有的配置类型,只需在模块中创建配置文件。
例如,添加一个事件的观察者,你创建的应用程序/ etc / events.xml,宣告了一个新的观察。
2.创建配置类型
若要创建新的配置类型,必须添加最新限制:
- XML configuration files
- XSD validation schema
- A loader