orba / config
- dev-bugfix/ZZ02-163-error-with-null-expression
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-master
- dev-feature/ZZ12-135-module-config-deprecated
- dev-bugfix/ZZ02-163-orba-config-error-with-null-expression
- dev-php8.1-update
- dev-feature/ZZ02-35-fix-exception-error
- dev-feature/ZZ02-34-integration-test-initialization-issue
- dev-feature/ZZ02-9-integration-tests
- dev-poc-draft-version-of-module
- dev-poc-config-processor
- dev-poc-config-repository
- dev-poc-csv-reader-structure
- dev-value-getter-class
- dev-develop
This package is auto-updated.
Last update: 2023-06-07 13:03:35 UTC
README
此模块允许使用 csv 文件管理 Magento 配置(core_config_data)。它作为原生 magento 系统的替代品,包括 config.php、环境变量和命令 app:config:dump
和 app:config:import
,因为这些功能有限。
基本用法
-
创建配置 csv 文件
路径 作用域 代码 值 状态 msp_securitysuite_recaptcha/backend/enabled 商店 意大利 1 总是 -
将其保存在您希望的位置,最好是在您的 Magento 项目的 git 仓库中。
-
在您的 CI/CD 流程中,使用以下命令自动导入文件
bin/magento orba:config --files myConfiguration.csv
该命令将自动清除所有缓存,因此更改应立即可见。
Csv 格式
Csv 要求
- 值分隔符:逗号
- 编码:UTF-8 无 BOM
- 包含列名的标题行是必需的
- 必需的列包括:路径、作用域、代码、值(或
value:<env>
,见下文)、状态
请小心在 Windows 中保存文件。由于用户偏好,文件可能使用分号作为值分隔符,并使用 Windows 编码。
作用域和代码
可能的作用域包括:默认、网站和商店。如果您留空作用域字段,则使用默认作用域。
作用域代码需要是
- 网站代码 - 用于作用域网站
- 商店代码 - 用于作用域商店
- <空字符串> - 用于作用域默认
路径 | 作用域 | 代码 | 值 | 状态 |
---|---|---|---|---|
msp_securitysuite_recaptcha/backend/enabled | 默认 | 1 | 总是 | |
msp_securitysuite_recaptcha/backend/enabled | 网站 | b2c | 1 | 总是 |
msp_securitysuite_recaptcha/backend/enabled | 商店 | 意大利 | 1 | 总是 |
状态
状态确定导入行为。可能的状态
- 总是
- 不存在
- 忽略
- 初始化
- 一次
可以使用 di.xml 添加对其他状态的额外支持。
总是
将配置从 csv 导入到数据库(如果已存在于数据库中则更新,不存在则插入)。
不存在
从数据库中删除配置。
忽略
忽略配置(就像它未列在 csv 文件中一样)。
初始化
仅在配置不存在于数据库中时导入配置。这意味着 csv 值的优先级低于在管理员面板中指定的配置,并且永远不会覆盖手动设置的值。
注意:当您在 Magento 管理员面板中更改一个配置时,整个部分都会被保存(数据库会填充默认值)。因此,即使您从未更改过配置,配置也可能已经在数据库中存在。
一次
仅当此配置和值组合尚未从csv导入到数据库时,才导入配置。
示例
- 管理员用户将配置ABC设置为1。数据库中的值是1
- 您导入csv文件,值为2,状态为一次。命令发现此配置尚未从csv导入(根据新数据库列:imported_value_hash),因此导入csv配置。数据库中的值是2
- 管理员用户将配置更改为1。数据库中的值是1
- 您再次导入csv文件,值为2,状态为一次 - 命令发现此配置已使用值2导入到数据库,因此跳过导入。数据库中的值是1
- 您再次导入csv文件,但这次值为3 - 命令发现此配置已导入到数据库,但前一次导入使用了不同的值,因此导入csv配置。数据库中的值是3。
值
在大多数情况下,值应是一个包含原始值的字符串。但是,有一些特殊情况
- 而不是原始值,您可以使用表达式,例如 {{env MY_ENV_VAR}}
- 对于具有backendType Encrypted的配置,您应指定纯文本值(因此,出于安全原因,您应使用“env”表达式)
- 对于具有backendType ArraySerialized的配置,您应使用JSON字符串,例如 {"name": "abc","code":"xyz"}
表达式
以下表达式可以作为值使用
- env
- file
- null
可能通过di.xml添加对其他表达式的支持。
ENV
ENV表达式允许您使用环境变量设置秘密或特定于环境的配置。
路径 | 作用域 | 代码 | 值 | 状态 |
---|---|---|---|---|
msp_securitysuite_recaptcha/general/private_key | 默认 | {{env RECAPTCHA_KEY}} | 总是 |
RECAPTCHA_KEY=passAbc123 bin/magento orba:config --files myConfiguration.csv
注意,这可以是任何环境变量。它不需要(也不应该)是 Magento 格式的环境变量,例如 CONFIG__DEFAULT__CONTACT__EMAIL__RECIPIENT_EMAIL。
注意,默认情况下,Magento 允许您使用环境变量设置配置,例如 CONFIG__DEFAULT__CONTACT__EMAIL__RECIPIENT_EMAIL="contact@example.com"。但是,原生系统使得无法在管理面板中覆盖环境变量中的值,而此工具允许这样做。
FILE
FILE表达式允许您使用外部文件设置秘密或特定于环境的配置。
路径 | 作用域 | 代码 | 值 | 状态 |
---|---|---|---|---|
msp_securitysuite_recaptcha/general/private_key | 默认 | {{file .recaptcha_key}} | 总是 |
touch .recaptcha_key
chmod 600 .recaptcha_key
echo "passAbc123" > .recaptcha_key
bin/magento orba:config --files myConfiguration.csv
NULL
NULL表达式允许您将配置设置为null(当需要区分null和空字符串时)。
路径 | 作用域 | 代码 | 值 | 状态 |
---|---|---|---|---|
msp_securitysuite_recaptcha/backend/enabled | 默认 | {{null}} | 总是 |
特定于环境的值
可以通过以下方式为不同的环境定义不同的值
路径 | 作用域 | 代码 | 值 | value:dev | value:prod | 状态 |
---|---|---|---|---|---|---|
msp_securitysuite_recaptcha/backend/enabled | 默认 | 0 | 1 | 2 | 总是 |
根据传递给orba:config命令的参数,数据库中保存的值如下
命令 | 值 |
---|---|
orba:config configuration.csv | 0 |
orba:config --env=dev configuration.csv | 1 |
orba:config --env=prod configuration.csv | 2 |
注意:如果您指定了--env=dev,但value:dev为空,则安装程序将不会使用默认值。空值将被保存。
例如。
当您使用以下文件运行orba:config --env=dev configuration.csv
时
路径 | 作用域 | 代码 | 值 | value:dev | 状态 |
---|---|---|---|---|---|
msp_securitysuite_recaptcha/backend/enabled | 默认 | 1 | 总是 |
数据库中保存的值将是空字符串,而不是"1"。
不同的环境
如果您需要为生产环境、测试环境和开发环境配置不同的配置,请使用以下一种或多种机制:
-
CLI 参数 --env + common.csv 文件中的多个环境特定值(在其他部分描述)。在 CI/CD 流程中,确保根据环境运行具有不同 --env 参数的命令。
-
多个文件,例如:
/common.csv /prod.csv /uat.csv /dev.csv
orba:config 命令允许您指定多个文件,在这种情况下,它们将被合并。在 CI/CD 流程中,确保根据环境运行具有不同参数的命令。
- prod: orba:config --files common.csv prod.csv
- uat: orba:config --files common.csv uat.csv
- dev: orba:config --files common.csv dev.csv
-
您也可以在 common.csv 中定义所有配置,但使用 "ENV" 表达式从环境中加载值。
Csv - 数据库差异
如果您对配置.csv 文件进行了更改,请确保将配置标记为 "absent",而不是从 csv 文件中删除它。如果您只是从文件中删除配置,则下一次导入将保留数据库值,从而导致文件和数据库之间存在差异。
同样,出于相同的原因,如果您需要更改配置范围,不要仅编辑现有配置条目中的范围。相反,为新的范围添加新条目,并将旧范围标记为 "absent"。
示例:这是更改之前您的配置文件
路径 | 作用域 | 代码 | 值 | 状态 |
---|---|---|---|---|
msp_securitysuite_recaptcha/backend/enabled | 网站 | b2c | 1 | 总是 |
这是更改范围后您的配置文件应该看起来像什么
路径 | 作用域 | 代码 | 值 | 状态 |
---|---|---|---|---|
msp_securitysuite_recaptcha/backend/enabled | 默认 | 1 | 总是 | |
msp_securitysuite_recaptcha/backend/enabled | 网站 | b2c | 1 | 不存在 |
请注意,此配置可能在数据库中有一个 stores 范围值,由管理员用户手动设置。此导入工具不会删除此值。因此,它可能看起来导入失败,因为没有导入新值,因为 store 值会掩盖从 csv 文件导入的网站或默认值。
命令
bin/magento orba:config --files file1.csv file2.csv [--env=dev] [--dry-run] [-v]
如果您指定了多个文件,则将合并它们。最终值取自配置最后出现的文件,在本例中:file2.csv。
命令输出
命令在成功时退出代码为 0,在出现错误时退出代码大于 0。
在成功的情况下,命令打印更改摘要,例如:
Added: 1
Updated: 0
Updated Hash: 0
Removed: 0
Ignored: 0
Total: 1
在增加详细程度(bin/magento orba:config -v
)的情况下,命令还打印每个操作的配置列表,例如:
Added:
analytics/subscription/enabled stores italy
Updated:
sales/msrp/enabled default
Updated Hash:
sales/msrp/enabled websites b2c
更新的哈希值表示 csv 中的配置与数据库中的配置值相同,但数据库中缺少 imported_value_hash,因此需要更新。
导入值哈希用于标记配置已使用 Orba_Config 导入。
您可以使用 --dry-run 和增加详细程度运行命令,以检查导入将如何影响数据库。
安装
composer require orba/module-config
bin/magento module:enable Orba_Config
bin/magento setup:upgrade