orba/config

此包已被废弃且不再维护。作者建议使用 lingaro/config 包代替。

安装数: 7,613

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:magento2-module


README

此模块允许使用 csv 文件管理 Magento 配置(core_config_data)。它作为原生 magento 系统的替代品,包括 config.php、环境变量和命令 app:config:dumpapp:config:import,因为这些功能有限。

基本用法

  1. 创建配置 csv 文件

    路径 作用域 代码 状态
    msp_securitysuite_recaptcha/backend/enabled 商店 意大利 1 总是
  2. 将其保存在您希望的位置,最好是在您的 Magento 项目的 git 仓库中。

  3. 在您的 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"。

不同的环境

如果您需要为生产环境、测试环境和开发环境配置不同的配置,请使用以下一种或多种机制:

  1. CLI 参数 --env + common.csv 文件中的多个环境特定值(在其他部分描述)。在 CI/CD 流程中,确保根据环境运行具有不同 --env 参数的命令。

  2. 多个文件,例如:

    /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
  3. 您也可以在 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