Magento Open Source 2.4.4发行说明
Magento Open Source 2.4.4引入了对PHP 8.1的支持。 已更新所有项目库和依赖项,以便与PHP 8.1兼容。 核心编辑器依赖项和第三方库也已升级到与PHP 8.1兼容的最新版本。 此版本还支持OpenSearch 1.2。
此版本包括近250项质量修复和增强功能。
应用AC-3022.patch以继续将DHL作为运输运营商
DHL已引入架构版本6.2,并且将在不久的将来弃用架构版本6.0。 支持DHL集成的Adobe Commerce 2.4.4及更早版本仅支持版本6.0。 部署这些版本的商家应尽早应用AC-3022.patch,以继续将DHL作为装运承运人提供。 有关下载和安装修补程序的信息,请参阅应用修补程序以继续将DHL作为运输运营商提供知识库文章。
其他发行信息
虽然这些功能的代码与Magento Open Source核心代码的季度发布捆绑在一起,但其中几个项目也单独发布。 每个项目的文档中都提供了特定于项目的单独发行信息,其中记录了这些项目的错误修复。
composer.json文件中的可信插件。 当前,composer.json文件中包含但未标记为受信任的插件会自动安装。 但是,从2022年7月起,Composer将不加载插件,除非它们被明确允许。 有关如何修改composer.json文件以明确允许加载插件的说明,请参阅升级到Adobe Commerce 2.4.4🔗知识库文章时的Composer插件问题。此版本中包含的修补程序
Magento Open Source 2.4.4包括针对Adobe Commerce和Magento Open Source 2.4.3、2.4.3-p1和2.3.7-p2的以下修补程序解决的所有问题:
-
已在此版本中解决
MDVA-43395_EE_2.4.3-p1_COMPOSER_v1.patch和MDVA-43443_EE_2.4.3-p1_COMPOSER_v1.patch解决的漏洞。 -
AC-384_Fix_Incompatible_PHP_Method__2.4.3_ce.patch. 该修补程序解决了在升级过程中发生的严重PHP错误。 请参阅Adobe Commerce升级2.4.3、2.3.7-p1 PHP致命错误修补程序知识库文章。
Magento Open Source 2.4.4亮点
在此版本中查找以下要点。
安全性增强
此版本包括一项安全修复和平台安全改进。 此安全修复程序已回溯到Magento Open Source 2.4.3-p2和Magento Open Source 2.3.7-p3。
到目前为止,尚未发生与这些问题相关的已确认攻击。 但是,可能会利用某些漏洞访问客户信息或接管管理员会话。 这些问题中的大多数要求攻击者首先获得对管理员的访问权限。 因此,我们提醒您采取一切必要步骤保护您的管理员,包括但不限于以下工作:
- IP 列入允许列表
- 双重身份验证
- 使用VPN
- 使用唯一位置而不是
/admin - 良好的密码卫生
有关这些已修复问题的最新讨论,请参阅Adobe安全公告。
其他安全增强功能
此版本的安全改进改进了与最新安全最佳实践的符合性,包括:
-
在2.3.4中,作为降低安全风险的一部分,为了支持更严格的变量语法,已弃用电子邮件变量用法。 此版本中完全删除了此旧版行为,以继续降低安全风险。
因此,在升级到Magento Open Source 2.4.4或Adobe Commerce 2.4.4后,在以前版本的Magento Open Source中有效的电子邮件或新闻稿模板可能无法正常工作。 受影响的模板包括自定义模块或第三方扩展中的管理员覆盖、主题、子主题和模板。 即使在使用升级兼容性工具修复已弃用的使用之后,您的部署仍可能会受到影响。 请参阅迁移自定义电子邮件模板,以了解有关迁移受影响模板的潜在影响和准则的信息。
-
集成令牌无法再用于API持有者令牌身份验证。 以前,集成令牌可用作基于令牌的身份验证的独立密钥。 但是,由于永不过期的访问令牌的安全影响,默认情况下已禁用此行为。 上一个行为可以通过命令行或管理员启用。 请参阅基于令牌的身份验证。
-
会话ID不再存储在数据库中。
-
现在,将OAuth访问令牌和密码重置令牌存储在数据库中时会进行加密。
-
已加强验证,以防止上载非字母数字文件扩展名。
-
为优惠券代码添加了reCAPTCHA支持。
-
当Magento Open Source处于生产模式时,Swagger现在默认处于禁用状态。
-
Magento Open Source店面现在默认启用HTTPS。 默认情况下启用 在店面上使用安全URL 和 在管理员中使用安全URL 设置,并且所有内置Cookie现在都设置为安全。
-
现在,所有Magento Open Source安装都需要依赖项混淆插件。 以前,仅基于编辑器的安装需要此插件。 它现在允许使用可信版本。 商家可以绕过此插件中设置的限制,这些限制禁止对Composer安装进行某些组合。 对于受信任的版本,可以绕过约束,Magento Open Source现在会在继续安装之前显示警告。
-
开发人员现在可以基于每个端点配置Magento Open Source RESTful端点接受的阵列大小限制。 查看API安全性。
-
添加了以下机制:限制用户可在系统范围内通过Web API请求的资源大小和数量,以及覆盖单个模块的默认值。 这解决了
MC-43048__set_rate_limits__2.4.3.patch解决的问题。 查看API安全性。
平台增强功能
Magento Open Source 2.4.4现在支持PHP 8.1。 已更新所有项目库和依赖项,以便与PHP 8.1兼容。 其他平台增强功能包括:
-
Magento Open Source 2.4.4提供对Elasticsearch 7.16和OpenSearch 1.2的支持。 部署托管在本地的应用程序开放Source商家可以使用任一解决方案。 但是,OpenSearch现在是云中托管的Magento Open Source 2.4.4部署的默认搜索引擎。 所有使用云部署且升级到版本2.4.4的客户都必须使用OpenSearch。 请参阅在Cloud 2.4.4上切换到OpenSearch for Adobe Commerce
-
JQuery库已升级到版本3.6。jquery-ui库已升级到版本1.13.0。 其他几个JavaScript库已更新至最新版本。 -
现在支持TinyMCE 5.8.1。 TinyMCE4已从代码库中移除。
-
RequireJS库已升级到最新版本(v2.3.6)。 GitHub-33672 -
PHPUnit已升级到最新版本(9.5.x)。 已更新测试和测试框架,以便与新版本兼容。
-
大多数Laminas依赖项已升级到与PHP 8.1兼容的最新版本。 从代码库中移除了3个Laminas依赖关系,以减少依赖关系数。
jQuery UI升级
jQuery UI已升级到最新版本(v1.13.0)。 已删除以下v1.10.0 jQuery组件:
GraphQL
此版本包括这些GraphQL增强功能:
-
性能改进:
-
GraphQL购物车操作的性能已得到改进。 现在,在GraphQL请求期间只调用一次
collectQuoteTotals()方法,这缩短了响应时间。 -
通过更改GraphQL请求的缓存方式,店面性能得到了改进。 Fastly和Varnish现在缓存随
auth令牌发送的GraphQL请求。
-
-
新店面相关的管理员配置设置。
storeConfig查询现在返回“零小计结帐”和“支票汇票”付款方法的配置设置。 -
已更新核心GraphQL库。 使核心GraphQL能够运行的
webonyx库已升级到版本^14.9。 -
修复了包含多站点和多语言存储的GraphQL中的翻译问题。 GraphQL解析器现在会按预期根据存储范围返回翻译后的字符串。
-
GraphQL现在为New Relic提供描述性交易名称,这对于调试很有帮助。 GitHub-30915
有关这些增强功能的详细信息,请参阅GraphQL开发人员指南。
供应商捆绑的扩展
除Braintree之外,所有供应商捆绑的扩展都已从Magento Open Source 2.4.4代码库中移除。 商家应该迁移到官方扩展,这些扩展可在Commerce Marketplace上找到。
PayPal支付增强功能
-
现在支持Venmo支付选项。
-
Pay Later已添加为购物者的选项,它根据购物者的位置而不是商家的位置来设置。
-
商家现在可以在自己选择的国家测试购物者体验时,设定购物者所在的国家/地区。 以前,检测仅限于针对商家所在国家/地区的检测。 此更改仅在沙盒模式下有效。
-
结账页面上的消息现在可准确显示购物者在使用“稍后支付”时预计将支付多少以及支付多少费用。
辅助功能更新
此版本增强了对于标准无障碍准则的合规性。 它包括改进的工具提示、可访问的屏幕元素命名和标记,以及重新设计的图标和按钮。 超过80%的此类修复有助于改善视力缺佳或视力缺佳用户的购物体验。
页面生成器
商家现在可以向图像(图像、横幅、幻灯片)添加替换文本(alt_text)以增强内容可访问性。 GitHub-746
修复的问题
我们正在修复Magento Open Source 2.4.4核心代码中的数百个问题。 下面介绍了这些已修复问题的子集。
安装、升级、部署
- Magento Open Source现在会按预期在生成日志文件中记录静态内容部署错误。
- 数据修补程序无法再忽略表的唯一约束并将重复值插入到MySQL数据库表中。 以前,修补程序可能会插入重复的值,这会损坏数据库。
- 商家现在可以成功地从带Klarna的Magento Open Source 2.4.2部署升级到Magento Open Source 2.4.3。 GitHub-33760
- 现在可以从命令行成功更改Sitemap生成器配置。 以前,当您尝试在管理员之外更改Sitemap配置时,applicationOpen Source会显示此错误:
Import failed: Notice: Trying to access array offset on value of type null in app/code/Magento/Cron/Model/Config/Backend/Sitemap.php on line 78。 GitHub-31428
- 在
config.php中更新time值时,bin/magento app:config:import命令现在可正确执行。 以前,通过手动编辑(即不使用管理员)更改产品警报配置会导致错误。
辅助功能
- 解决了在购物车和结账页面上导航时的辅助功能错误。 GitHub-34483
- 屏幕阅读器现在可以阅读产品页面上的所有相关表单元素。
- 整个店面的图像删除和移动图标按钮的对比度已得到改进,以提高弱视用户的可读性。
- 为用于在整个产品界面中执行搜索的放大镜图标指定了可访问的名称和替换文本。
- 现在可以使用Tab键访问富文本编辑器工具栏。
- 此项目具有权重,在目录 > 产品详细信息页面上选择输入,现在具有可见的标签和可访问的名称。
- 控件的可访问名称现在包含其可见标签的文本,其中包含每页项目数下拉列表。
- 当表折叠时,目录 > 产品详细信息页面上的表控件现在具有可见的标签和可访问的名称。
- 现在,“产品”表格中的“编辑链接”具有唯一、有意义的链接文本。
- 扩展工具提示的触发器现在提供文本名称。
- 店面各处的按钮现在都有独特的描述性可访问名称。 以前,带有文本按钮和相邻向下箭头图标按钮的分割按钮具有相同的辅助功能名称。
- 整个店面的图像删除和移动图标按钮的对比度已得到改进,以提高弱视用户的可读性。
- 向商户编辑搜索引擎优化折叠面板的输入时显示的铅笔图标添加了替换文本。
- 为用于在整个产品界面中执行搜索的放大镜图标指定了可访问的名称和替换文本。
- 产品页面 新视图 文本输入字段现在具有可访问的名称。
- 此项目具有权重,在目录 > 产品详细信息页面上选择输入,现在具有可见的标签和可访问的名称。
后端
- 管理员现在可以在配置了自定义管理员路径且启用了密钥的部署中登录到管理员。 以前,applicationOpen Source显示此错误:
Invalid security or form key. Please refresh the page。
- 当多商店层次结构发生更改时,Magento Open Source不再重定向到所有商店视图范围。 以前,在保存层级后,购物者会被重定向到不正确的商店URL,并在多商店部署中选择了所有商店查看范围。
捆绑产品
- 购物者现在可以为其购物车添加捆绑产品(具有固定产品税和两个选项)。 以前,applicationOpen Source未添加产品并显示此错误:
We can't add this item to your shopping cart right now。
- 已将
data-validate和min属性形式的表单验证添加到购物车数量字段,以防止捆绑产品出现负值。
- 现在,当在商店视图级别上禁用子产品时,
products查询会正确筛选捆绑产品。 以前,查询会返回在商店视图级别禁用的子产品。
cron现在在indexer_update_all_views执行期间按预期清除了产品类别缓存。 以前,在对类别中的许多产品进行批量更新后,applicationOpen Source在类别页上显示不正确的产品计数。
- 当捆绑产品重新上架时,Magento Open Source现在会按预期更新类别产品缓存。
- 在使用不同货币的多商店部署中,为捆绑产品购买提供的电子邮件确认现在可按预期进行货币转换。 GitHub-33426
- 现在,可以在产品网格中正确显示带有%前缀的捆绑产品的高级定价特价折扣。 以前,产品网格中带有$前缀的%折扣显示不正确,而不是%。
- 现在,当相关产品更改其状态时,管理员中的捆绑包产品状态会自动更新。
- 捆绑产品的GraphQL解析程序现在会检查是否已禁用子捆绑产品。 以前,不会进行此检查,并且诸如
categoryList之类的查询返回了不可销售的子产品。
cart查询响应现在为具有动态价格的捆绑产品返回准确折扣。 以前,查询响应包括分别应用于每个捆绑产品的折扣。
缓存
- 已优化重新索引期间运行的缓存清理算法。 现在,在重新索引期间缓存类别时,捆绑产品会按预期显示。 以前,在重新索引期间缓存产品类别后,捆绑产品会持续数小时不显示。
- 在一般使用情况下,页面缓存不再快速增长。 GitHub-9458
- 下订单不再导致从清漆缓存中删除与已订购产品相关的所有缓存标记。 GitHub-30128
- 当您从顶级类别更新产品或者运行索引以更新产品属性或库存状态时,全站点页面缓存不再消失。 以前,清漆缓存将顶部菜单类别ID添加到所有页面缓存标记。 GitHub-33465
购物车和结账
- 最低广告价格这是什么? 购物车页面上的链接现在可点击,并按预期打开信息弹出窗口。 以前,单击此链接不起作用。
- 在启用了永久购物车的部署中,购物者现在可以在会话超时后下单而不会出现错误。 以前,applicationOpen Source在会话超时后显示付款错误。
- 为客户地址属性分配较高的排序顺序值不会再导致结账页面上的性能下降。
- 如果更新数量无效,Magento Open Source现在会将购物车产品数量还原为之前的值。
- 现在,单击“最近查看的项目”部分中的 添加到购物车 按钮,可按预期重定向到产品详细信息页面。 以前,购物者会被重定向到产品列表页面。
- 来宾购物者现在可以使用包含多种自定义客户地址属性的客户地址成功结帐。 以前,在签出期间显示自定义属性的值时,其格式不正确。 GitHub-30290
- 现在,在启用表费率的情况下,Magento Open Source可以将免费配送阈值正确应用于订单。 GitHub-21832
- 您现在可以使用
POST /V1/guest-carts/:cartId/items将具有不同选项的简单产品添加到购物车。 以前,此调用会更改您添加的第一个简单产品的数量,而不是添加具有指定选项的第二个简单产品。 GitHub-32302
- 现在,在为
Poland国家/地区和PLN货币配置部署时,结账页面的“订单摘要”部分会显示正确的货币和金额。 以前,购物车和结帐页面显示的金额为PLN 0。
- 当购物者在更改迷你购物车中的产品数量后单击 更新购物车 时,Magento Open Source不再引发错误。 以前,applicationOpen Source显示此错误:
The quote item isn't found. Verify the item and try again。
- 针对特定商店中可配置产品的GraphQL
products查询现在仅返回指定商店中的产品价格范围。 以前,请求会返回非指定商店中简单产品的价格范围。
- 当购物者添加的帐单地址缺少街道字段
Uncaught TypeError: Unable to process binding "text: function(){return currentBillingAddress().street.join(', ') }"时,Magento Open Source不再引发此错误。 GitHub-33826
- 在从已删除mini cart的商店中结帐时,Magento Open Source不再引发控制台错误。 GitHub-34513
- 当帐单地址缺少街道字段值或街道字段值不是数组时,在付款阶段签出不再失败。 以前,签出失败,出现此错误:
Uncaught TypeError: Unable to process binding "text: function(){return currentBillingAddress().street.join(', ') }"。 GitHub-33826
- 当两个购物车规则应用于满足以下条件的订单时,Magento Open Source现在可以正确计算折扣:一个购物车规则应用了优惠券代码和 整个购物车的固定价格 条件,而第二个购物车价格规则没有优惠券和 产品价格折扣百分比 条件。 以前,当之前的购物车规则已对某些产品应用折扣时,相关算法无法在购物车产品之间正确按比例分摊折扣。
- 现在,可在优惠券报表网格中正确计算销售总额。 以前,销售总额不包括运费。
- 现在,当购物者在配送方式之间切换时,可以正确计算整个购物车折扣。
- 管理员创建订单页面上 状态 字段的下拉列表现在由所选国家/地区的预定义值填充。 以前,此字段是输入文本字段而不是下拉菜单。
- 在您使用
addConfigurableProductsToCart突变在更改商店视图后直接将可配置产品添加到购物车后,Magento Open Source不再引发错误。
- 当您使用
addConfigurableProductsToCart突变将可配置产品的已禁用子项添加到购物车时,Magento Open Source不再引发错误。 以前,applicationOpen Source引发完整性约束违规错误。
- 如果优惠券应用顺序失败,则优惠券使用值不再更改。 以前,在购物车中应用优惠券后,一次性自动生成的优惠券被标记为无效,但未下订单。
- 验证已添加到结账工作流中,以将客户的街道地址与默认值进行比较。 如果验证过程标识了更改,它将将
customer_address_id设置为null以将其视为新的客户地址。 以前,如果客户在结账时保存地址而没有进行验证,并且在将验证应用于结账字段后同一客户尝试使用同一地址下订单,则应用程序Open Source不接受编辑后的地址并引发异常。
购物车价格规则
- 现在,在启用
auto选项的情况下保存相关购物车价格规则之前,禁止生成优惠券。 如果您尝试在不启用auto选项的情况下保存此规则,应用程序Open Source会显示以下消息:Rule is not saved with auto generate option enabled. Please save the rule and try again。
- 添加了用于确认购物车价格规则折扣正确应用的测试。
- 使用带有的SKU条件的购物车价格规则如果在购物车中找到/未找到项目,并且所有条件/任何条件true,则对可配置产品而言,其现在可按预期工作。
- 现在,购物车价格规则正确应用于固定价格的捆绑产品。 以前,当至少有一个子产品具有在规则条件中指定的相同属性集时,购物车价格规则不适用于这些产品。
- 现在,当为Magento Open Source配置了 整个购物车的固定金额折扣 购物车价格规则时,可以将价格为0的产品成功添加到购物车中。 以前,applicationOpen Source显示此错误:
report.ERROR: Warning: Division by zero in /home/mer33515/public_html/ee24develop/app/code/Magento/SalesRule/Helper/CartFixedDiscount.php on line 85。
- 更正了在激活具有固定金额折扣的购物车规则时,
cart查询返回不准确的折扣金额的情况。
目录
- 当产品具有
datetime属性时,在产品网格上执行批量属性更新操作时,Magento Open Source不再引发异常。
- GraphQL查询现在会根据子产品的可见性筛选器设置返回可配置产品的子产品的结果。
- 当可配置的产品属性发生更改时,Magento Open Source不再修改相关的产品价格。 以前,可配置产品的最低广告价格(MAP)会覆盖店面相关产品的价格。
- 当产品具有
datetime属性时,在产品网格上执行批量属性更新操作时,Magento Open Source不再引发异常。
- 管理员产品网格和过滤器的下拉/多选属性值现在按预期从管理员设置中派生。 以前,属性值派生自默认存储设置。
- GraphQL类别查询会按预期返回有关暂存类别更改的信息。
- 现在,当产品同时分配给父类别及其子类别,但位于每个类别的不同位置时,产品列表会在管理员中准确呈现。 以前,产品列表渲染失败,出现此错误:
Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already exists。 [GitHub-33145](https://github.com/magento/magento2/issues/33145
- 现在可以将具有多个选项(超过150个)的多选属性分配给新产品。 以前,属性选项保存在
catalog_product_entity_varchar表中,当您在管理员中重新打开产品时,并非所有选项都存在。 GitHub-33486
- 添加了对路由器无法实例化从URL中收集的动作类的验证。 应用程序Open Source现在显示标准错误消息。 以前,applicationOpen Source显示此错误:
PHP Error: Cannot instantiate abstract class Magento\Catalog\Controller\Product\Compare。
- 将许多产品(约10,000件)分配给某个类别不会再导致浏览器崩溃。
- 无论是从管理员中保存还是导入,图像属性现在都始终保存在数据库中。 以前,图像ALT文本值的保存方式不一致。 如果映像存在且标签设置为null,则不会在数据库中重置标签值。
- 已优化目录小组件SQL查询。 以前,大型MySQL查询会减缓页面加载并导致MySQL中断。
- 价格筛选器现在可以正确用于缺货的可配置产品。 以前,缺货的可配置产品不显示在其正确的价格范围内。
- 在部分索引过程中,更新子产品不再删除从其父可配置产品继承的目录规则折扣。 以前,当我们将可配置产品分配给某个类别而不是与其关联的简单产品,然后使用该类别创建目录规则时,应用程序Open Source在部分索引过程中删除了分配给简单产品的目录规则。
- 在添加产品选项时,分组和可配置产品的网格视图列表现在仅包含简单和虚拟产品。 以前,该应用程序包含带有选项的简单产品。
目录规则
- 每日更新目录规则不再导致性能下降。 以前,部分目录产品价格索引不会删除旧价格或日期。
- 在部分重新索引期间,Magento Open Source不再删除可配置产品的目录价格规则。 以前,在可配置产品重新编制索引时,只对子产品重新编制索引。
- 具有 类别的目录价格规则不是category_id 条件,现在适用于不属于任何类别的产品。
可配置的产品
- 现在,可配置的产品选项标签名称基于在管理员订单创建期间选定的商店视图。 以前,applicationOpen Source使用默认商店视图中的标签名称。
- 现在,当启用显示缺货产品的全局标志时,产品列表可正确包含缺货产品的子产品。 以前,如果启用此标记时多个子产品选项中的一个缺货,则产品列表不包括子产品。
- 您现在可以使用
addConfigurableProductsToCart突变在非默认商店视图中将可配置产品添加到购物车。 以前,当网站ID和商店ID不同时,您无法将可配置产品添加到购物车。 GitHub-30948
- GraphQL
products查询不再返回有关可配置产品的已禁用子产品的数据。
- 为可配置产品创建新配置时,不再覆盖现有配置中的更改。 以前,在生成新变体后,现有变体的状态会被默认状态
enabled覆盖。
- 尝试将可配置产品的已禁用子级添加到购物车时,Magento Open Source不再引发内部错误。
客户
- Magento Open Source现在会在订单创建期间考虑管理员区域设置的网站范围。 以前,订单详细信息(如客户地址属性)仅在一个网站上在多站点部署中正常工作。 GitHub-23254
电子邮件
- 当客户尝试使用无效的电子邮件帐户登录时,签出登录弹出窗口中的电子邮件字段验证错误现在与客户登录页面上的电子邮件验证错误匹配。
- 当从管理员添加装运注释并激活 通知客户 复选框时,Magento Open Source不再在装运详细信息电子邮件中包含错误消息。 以前,送货确认电子邮件包含此消息:
We're sorry, an error has occurred while generating this content。
- 现在,可在电子邮件模板中正确转换地区和国家/地区ID值。 以前,当您从管理员电子邮件模板单击 预览链接 时,无法正确显示国家/地区和区域名称。
- 管理员为非默认商店视图发送的销售更新电子邮件现在包含正确的订单状态标签。 以前,这些电子邮件始终显示默认存储中的状态。 GitHub-29263
- Magento Open Source现在按预期在电子邮件中包含
Content-Disposition: inline标头。 GitHub-29258
- 在使用Microsoft Outlook和MS Exchange Server的部署中,订单和发货通知电子邮件现在可按预期工作。 以前,电子邮件正文为空,但包含一个ATT*标记的附件。 GitHub-25076
- 现在,订单电子邮件包含使用购物者的区域设置进行本地化的数据(如预期)。 以前,排序电子邮件使用管理员区域设置。
- 单击任何电子邮件模板的预览现在会按预期在单独的窗口中打开模板预览。 以前,applicationOpen Source同时从“电子邮件模板”网格和弹出窗口中打开模板预览。
- 现在,从非默认网站发送的异步订单电子邮件包含相应网站的徽标URL。 以前,这些电子邮件始终包含默认网站或主网站的徽标。 (具有
storeCode值的默认键已分配给传递给UrlInterfacegetUrl函数的第二个数组参数。 此值区分不同商店/网站的URL,并为发送给客户的电子邮件内容生成正确的baseUrl。)
框架
- 现在,通过将数字转换为字符串并比较字符串,可以实现数字与非数字字符串之间的非严格比较。 数字字符串与数字字符串之间的比较仍保持与以前相同的效果。 这意味着
0 == "not-a-number"现在被视为false。 GitHub-33780
- 辅助函数
Magento\Payment\Helper\Data不再在构造函数中创建新布局。 以前,当在自定义命令中使用此帮助程序但未指定区号时,Magento Open Source会引发错误。 GitHub-33908
- 更新了
allure-framework/allure-php-api编辑器依赖项。
- 现在,当bootstrap文件中发生异常时,Magento Open Source会返回500响应代码。 以前,applicationOpen Source返回200 OK状态代码。 GitHub-22196
- 现在,货币符号已按预期在店面产品详细信息页面上加载。 以前,重新加载JavaScript页面后,此符号有时会消失。
- 更新
symfony/console在运行bin/magento setup:di:compile时不再导致失败。 GitHub-33595
- 新的必需选项已添加到随Magento Open Source分发的
.htaccess和nginx.conf文件中,以支持PHP 8.x。 过时的选项也已删除。 GitHub-34358
- 商家现在可以上传多个产品的视频。 现在,仅当上传的文件名包含扩展名时,文件生成过程才会为文件名附加扩展名。 以前,当商家尝试上传并为两个不同的产品保存相同的视频时,应用程序Open Source引发此错误:
Notice: Undefined index: extension in /app/7ha7zds7wvqys_stg/vendor/magento/framework/File/Uploader.php on line 699。 出现此情况是因为Magento Open Source尝试将文件扩展名附加到名称,而不管上传的文件名是否具有扩展名。
- 更正了
sprintf(__())和sprintf(Magento\Framework\Phrase())构造的问题,以便在整个代码库中与PHP 8.x兼容。 以前,applicationOpen Source引发此类型的错误:Expected parameter of type 'string', 'Magento\Framework\Phrase' provided。 GitHub-34085
- 改进了高级搜索查询参数的验证。 GitHub-33589
- 执行
bin/magento support:backup:code现在会按预期创建备份。 以前,applicationOpen Source会创建一个备份,但会引发错误。
- 已成功执行的
cron进程现在被分配了success状态。 以前,同一cron进程可以运行两次,因为成功的cron进程被分配了pending状态。
Magento_Logging模块现在支持IPv6。
常规修复
- 复制产品时,Magento Open Source现在会根据其定义的范围复制所有产品字段。 以前,name和 description 字段已重置为
global范围。
- 当产品价格为0时,Magento Open Source不再对折扣应用增量四舍五入。 以前,applicationOpen Source计算的是负折扣金额。
- 现在可以成功保存具有 设置为新 属性、且分配了空开始日期和过期结束日期的产品。 以前,当您使用以下设置保存产品时,applicationOpen Source会引发此错误:
Make sure the To Date is later than or the same as the From Date。
- 管理员现在可以重试已超过最长处理时间的操作。 默认最长为12小时。
- 由于未确认使用者的消息,批量操作处理期间不再发生管道断裂错误。 现在,预取计数属性可为使用者限制这些消息并避免错误。 以前,运行
bin/magento queue:consumers:start async.operations.all生成此错误:Broken pipe or closed connection。
- 现在,在第二次登录尝试失败后,购物者会按预期重新定向回登录页面。 以前,在第二次尝试登录失败后,购物者会被重定向到404页面。 GitHub-32885
- 已延长密码重置令牌的有效期,以避免在提交密码更改页面期间出现争用情况。 GitHub-29647
- 现在会遵循分配给新集成的权限。 GitHub-33347
- 更正了影响“联系我们”表单的例外日志中留言的回归问题。 GitHub-34483
- 解决了JavaScript加载客户数据的多个问题。 GitHub-30498
- 在扩展中使用
QuoteIdToMaskedQuoteId不再显着增加响应时间。 GitHub-33676
magento2/app/code/Magento/Bundle/Pricing/Price/ConfiguredPrice.php中的类BundleDiscountPrice现在已声明为预期类。 以前,applicationOpen Source引发此错误:Class Magento\Bundle\Pricing\Price\BundleDiscountPrice not found。 GitHub-33334
- AWS S3适配器写入的转义CSV字段值现在与其他文件系统适配器写入的数据匹配。
- 现在支持与S3兼容的存储。 GitHub-32114
- 从一台设备注销不再自动从其他设备注销购物者。
GraphQL
generateCustomerToken和revokeCustomerToken突变现在为用户状态提供了正确的缓存ID。 以前,这些突变使用无效的x-magento-cache-id,这会降低性能。
setBillingAddressToCart突变现在正确使用same_as_shipping参数来设置帐单地址,以与预期的送货地址匹配。 以前,applicationOpen Source显示此错误:The shipping method is missing. Select the shipping method and try again。 GitHub-30924
- GraphQL购物车操作现在仅在查询请求时才计算购物车总计。 以前,购物车操作始终会计算总计,这是一项资源密集型操作。
addProductsToCart突变现在只将分配给标题中定义的商店的产品添加到购物车。
- 使用分层导航筛选器的
products查询现在返回正确的子类别列表。 GitHub-33387
- 返回
ConfigurableCartItem对象的查询和变动包含有关已配置变体的预期信息。
products查询现在返回配置产品选项值和变体属性值。 以前,查询响应中的这些值为空。
- 现在,当在商店视图级别上禁用子产品时,
products查询会正确筛选捆绑产品。 以前,查询会返回在商店视图级别禁用的子产品。
- 当 Show Telephone 管理员配置设置设为可选时,
setShippingAddressesOnCart突变现在支持在电话号码值为空的购物车上设置送货地址。 以前,applicationOpen Source引发此错误:Field CartAddressInput.telephone of required type String! was not provided。
- 更正了
addSimpleProductsToCart突变允许您向购物车添加未分配到目标网站简单产品的问题。
- 已针对使用搜索参数优化搜索结果的GraphQL
products查询优化了MySQL查询。
- 如果产品未包含在请求的范围中,则
addConfigurableProductToCart突变不再支持将产品添加到购物车。
products查询现在仅返回分配给所请求存储审阅的可配置变体。 以前,会返回所请求的可配置产品的所有变体。
addSimpleProductsToCart请求现在可以并行成功运行。 以前,对同一SKU的多个请求会为同一购物车ID创建重复的行项目,而不是按预期增加产品数量。
addProductsToCompareList突变现在可用于比较可配置产品的变体。
- 当从后端更新层产品的价格时,新价格会在客户的购物车中正确更新。 以前,尽管购物车摘要部分中的小计已正确更新,但行小计未更新。
- 当用于添加具有多个选择选项的捆绑产品时,
addProductsToCart突变现在会将所有选定选项添加到购物车。 以前,该突变仅添加最后的选择。 GitHub-33123
- 当可选电话字段的值设置为空字符串时,GraphQL查询现在会按预期返回账单地址。 以前,查询返回null地址值。 GitHub-30218
- 当多个产品具有相同的相关性或价格值时,
products查询响应现在会根据指定的排序顺序列出产品。
- 并发
addSimpleProductsToCart和addProductsToCart请求不再导致重复报价项目。
products查询分层导航筛选器现在返回正确的子类别列表。 现在,在请求中提供includeDirectChildrenOnly标志时,只包含直接子类别。 以前,当产品被分配给多个类别时,所有类别都会包含在聚合部分的响应中。
- 为GraphQL搜索查询添加了搜索建议功能。
OrderAddress.telephone字段现在在customer查询或返回或修改客户订单地址的其他查询和突变中是可选的。
- 现在,当通过API更改组ID时,可以为店面和管理员中指定组中的客户正确更新价格。 以前,当通过API更改组ID时,这些价格无法正确更新。
图像
- 具有透明背景的水印图像在其叠加的透明产品图像上不再具有白色背景。 以前,当水印图像和产品图像都具有透明背景时,水印图像以白色背景显示。
- 启用AWS S3后,现在可以按预期上传和显示发票和运费收据的徽标。
- 在管理员设置为不同于商店URL的域的部署中,与添加到CMS页面中的图像关联的媒体标记现在包含商店URL(预期)。 以前,媒体标记包含静态管理员URL,而不是预期的商店URL。 GitHub-32930
- 在店面同时加载图像时刷新图像缓存时,Magento Open Source不再引发错误。
导入/导出
- 当文件名相似但只有一两个字符不同时,
bin/magento remote-storage:sync不再失败。 以前,第一个图像存储正确,但第二个名称类似的图像触发了同步失败并出现此错误:Notice: Undefined index: media/catalog/product/5/_ in /src/vendor/magento/module-remote-storage/Driver/Adapter/Cache/Generic.php on line 197。 GitHub-34337
- 在按计划导出后,Magento Open Source现在会将导出文件名中的时间戳转换为用户的时区。 以前,不会转换这些值,因此Magento Open Source会显示UTC时间戳。
- 多次导入同一CSV文件时,Magento Open Source不再在远程存储中创建重复的图像。
- 导入不再失败,并显示以下消息:
Import failed: Area code not set: Area code must be set before starting a session。 GitHub-16171
- 运行
bin/magento app:config:dump并手动编辑config.php后,您现在可以成功导入。 GitHub-31428
- 现在,可在自定义多选属性中使用非默认的多值分隔符。 以前,在导入期间验证失败。 GitHub-23156
- 现在,在从CSV导入期间,可以正确分配类别中的产品位置。
索引
- 现在,Magento Open Source在重新编制索引后,可按预期在店面显示产品。 先前,当前500个重新编制索引的产品有库存,后500个产品无库存,店面没有显示任何其他产品。
- 解决了合并
indexer.xml文件的一致性问题。 现在,classType中允许的值在未合并和合并的indexer.xml文件中是相同的。 GitHub-29609
- 在类别索引器中实施了同步机制,以防止完全索引器和部分索引器并行运行。 以前,当这些索引器并行运行时,店面类别页面中可能会暂时忽略产品,或者类别页面中可能会暂时空产品。
基础架构
- 不支持的
str_contains方法已替换为支持的函数。 这是Magento Open Source 2.4.3存在的已知问题。 GitHub-33680
-
已重构代码库以更正关键字
match的使用,该关键字是PHP 8.x中的保留关键字。 GitHub-33626 -
HTML标记现在正确嵌套和关闭,以符合JQuery 3.5.x中对包括自定义元素在内的非空白元素的标准。
- 修复了
abs()和round()函数以与PHP7.x和PHP8.x兼容。 GitHub-34322
- 运行
bin/magento setup:di:compile时,更新symfony/console不再导致失败。 GitHub-33595
- 更正了
colinmollenhour/cache-backend-redis编辑器依赖项的限制。 GitHub-34177
- 代码库已重构,删除对
phpunit/phpunit的已弃用方法的调用。 GitHub-33916
- 当具有只读
pubs/media的管理员尝试访问包含图像的产品的产品详细信息页面时,Magento Open Source现在显示信息性错误。 以前,applicationOpen Source引发PHP错误。 GitHub-32819
- 所有成员级
@api注释已在整个代码库中移到其类中。
gift-card Cms构件数据已从Magento/WidgetSampleData(Magento Open Source)移动到Magento/GiftCardSampleData(Adobe Commerce)。 这解决了在PHP8.1上安装带有示例数据的(Magento Open Source)时出现的问题。
- 在整个Adobe Stock集成代码库中标记了接口,并根据需要使用
@api。 GitHub-32875
- 在使用模拟的预准备语句时,结果集中的整数和浮点数现在使用本机PHP类型而不是字符串返回。 GitHub-34625
- 已禁用从false值自动创建数组的功能,以确保与PHP 8.1兼容。
- 辅助函数
Magento\Payment\Helper\Data不再在构造函数中创建新布局。 以前,当在自定义命令中使用此帮助程序但未指定区号时,应用程序Open Source会引发错误。 GitHub-33908
- 您现在可以由
di.xml将data参数传递给块实例构造函数。
- 已优化
Generator.php以提高可读性。 GitHub-33809
- 改进了
JwsManager类中的JWK检查,以处理在标头中直接设置算法的情况。 以前,此检查会忽略此有效方案。 GitHub-32636
JavaScript依赖项更新
jquery-validate第三方库GitHub-33853
Less.js(v3.13.1) GitHub-32845
库移除和弃用
-
以下库已被删除,因为Magento Open Source 2.4.x支持的所有浏览器均已内置对此功能的支持:
es6-collections.jsMutationObserver.jsModernizrFormData.js
-
已删除未使用的
jquery.hoverIntentJavaScript库。 GitHub-33732 -
lib/internal/Magento/Framework/Filter/Money.php已弃用。 它包含在PHP 8.x中删除的money_format()函数。 GitHub-33870 -
删除已弃用、不支持的
grunt-autoprefixer包。 GitHub-34037
库升级
-
以下库已升级到更新版本:
script.aculo.usChart.jsmoment.jsmoment-timezone-with-data.jsmatchMedia.jsunderscore.jsPrototypeJSRequireJSLessCSS
发票
- 为自动递增的发票ID删除了使用字符串作为前缀的强制转换
int。 因此,对于带有字符串前缀的数字,发票现在显示0。 GitHub-34451
记录
- Magento Open Source不再为在系统 > 批量操作中执行批量操作的失败API调用创建日志条目。 以前,失败的API调用的永久条目会添加到批量操作日志中。
- 不再允许从false值自动创建数组。 GitHub-34499,GitHub-34589
Adobe Commerce编码标准
- 已将
phpunit/ phpunit更新到magento-coding-standard存储库的最新版本。 GitHub-33622
- 已在Adobe Commerce编码标准存储库中将
webonyx/graphql-php依赖关系更新为版本^14.9。 GitHub-32863
- 向Adobe Commerce编码标准中添加了新的sniff
Magento2.PHP.ArrayAutovivification,以标识从false值自动创建数组。 GitHub-34509
- 向Adobe Commerce编码标准添加了新的sniff
Magento2.Functions.DeprecatedFunction。 GitHub-34547
- 在Adobe Commerce编码标准中添加了已弃用的函数以探查
Magento2.Functions.DiscouragedFunction。 GitHub-34548
Magento2.Annotation.MethodAnnotationStructure探查不再因误报而失败。 GitHub-34679
媒体集
- 在启用了AWS S3的部署中,
bin/magento media-gallery:sync命令不再失败。
- 现在,当菜单项超过11且启用了 启用旧媒体集 配置设置时,会显示新添加的媒体集内容子菜单标题。 GitHub-33889
- 编辑具有许多图像的产品时,媒体库选项卡的加载时间已缩短。 GitHub-33434
MFTF
-
CURLOPT_POSTFIELDS不再接受对象作为数组。 要将对象解释为数组,请执行显式(array)转换。 此做法也适用于接受阵列的其他选项。 GitHub-33781 -
curl_init()现在返回CurlHandle对象而不是资源。curl_close()函数不再有效。 相反,如果CurlHandle实例不再被引用,则会自动销毁该实例。 GitHub-33781
- 修复了可下载产品的MFTF测试中的错误。 GitHub-34270
- 已从
CatalogSearch、GroupedProduct、Newsletter、Paypal、Quote和Review模块中删除CliCacheFlushActionGroup。 GitHub-33531
- 现在,通过将数字转换为字符串并比较字符串,可以实现数字与非数字字符串之间的非严格比较。 数字字符串与数字字符串之间的比较仍保持与以前相同的效果。 这意味着0==“非数字”现在被视为false。 GitHub-33780
parse_url()现在区分不存在和空的查询和片段。 GitHub-33782
- 更新了代码库,以避免在使用
ReflectionType::isBuiltin()方法时发生致命错误。 GitHub-34194
新建操作组
AdminCheckOrderStatusInGridActionGroup GitHub-33747
StorefrontSelectFirstShippingMethodActionGroup GitHub-33773
AdminClickUpdateChangesOnCreateOrderPageActionGroup GitHub-33689
操作组
在以下测试中,重复性操作已替换为操作组:
AdminAddInStockProductToTheCartTest GitHub-34512
AdminAddBundleItemsTest GitHub-34312
AdminConfigurableProductAddConfigurationTest GitHub-34511
AdminConfigurableProductBulkUpdateTest GitHub-34435
AdminConfigurableProductDisableAnOptionTest GitHub-34511
AdminConfigurableProductOutOfStockAndDeleteCombinationTest GitHub-34316
AdminConfigurableProductOutOfStockTestDeleteChildrenTest GitHub-34316
AdminConfigurableProductRemoveAnOptionTest GitHub-34511
AdminConfigurableProductRemoveConfigurationTest GitHub-34511
AdminCreateAndEditSimpleProductSettingsTest GitHub-34435
AdminCreateAndEditVirtualProductSettingsTest GitHub-34435
AdminCreateInactiveFlatCategoryTest GitHub-34490
AdminCreateInactiveInMenuFlatCategoryTest GitHub-34510
AdminCreateDuplicateCategoryTest GitHub-34414
AdminCreateDuplicateProductTest GitHub-34414
AdminDeleteSimpleProductTest GitHub-33783
AdminEditRelatedBundleProductTest GitHub-34313
AdminMassDeleteBundleProductsTest GitHub-34313
AdminNavigateMultipleUpSellProductsTest GitHub-34314
AdminSimpleProductSetEditContentTest GitHub-34435
AdminSimpleProductTypeSwitchingToConfigurableProductTest GitHub-33788
AdminConfigurableProductTypeSwitchingToVirtualProductTest GitHub-33788
AdminCreateConfigurableProductWithDisabledChildrenProductsTest GitHub-33775
AdminUpdateFlatCategoryAndAddProductsTest GitHub-34490
AdminUpdateTopCategoryUrlWithNoRedirectTest GitHub-33774
AdminUpdateTopCategoryUrlWithRedirectTest GitHub-33774
CatalogProductListWidgetOperatorsTest GitHub-34579
CreateProductAttributeEntityWithReservedKeysTestGitHub-34422
EnableDisableBundleProductStatusTest GitHub-34313
StorefrontCheckRefundGrandTotalActionGroup GitHub-34315
StorefrontInactiveCatalogRuleTest GitHub-33556
StorefrontConfigurableProductCantAddToCartTest GitHub-33786
StorefrontConfigurableProductOptionsTest GitHub-33785
StorefrontConfigurableProductCanAddToCartTest GitHub-33784
StorefrontConfigurableProductGridViewTest GitHub-34311
StorefrontConfigurableProductListViewTest GitHub-34311
StorefrontProductNameWithHTMLEntitiesTest GitHub-33806
StorefrontProductNameWithDoubleQuoteTest GitHub-32991
新测试
AdminCreateOrderWithCheckedAppendCommentCheckboxTest GitHub-32381
CheckoutWithEnabledCaptchaTest GitHub-32991
StorefrontAddProductWithBackordersAllowedOnProductLevelToCartTest GitHub-33635
StorefrontGiftMessageForOrderOnCheckoutCartPageTest GitHub-32821
StorefrontCaptchaCheckoutWithEnabledCaptchaTest GitHub-32821
StorefrontCheckoutWithEnabledMinimumOrderAmountOptionTest GitHub-33460
重构的测试
CaptchaWithDisabledGuestCheckoutTest GitHub-30828
快讯
- 具有适当权限的用户现在可以按预期管理客户新闻稿订阅。 以前,只有具有完全权限的管理员才能在管理客户帐户页面上管理客户新闻稿订阅。
订购
- 购物者现在可以成功重新订购包含产品的现有订单,该订单具有店面和管理员中类型文件和类型下拉列表的自定义选项组合。 以前,applicationOpen Source引发错误,无法处理重新排序。
- 管理员订单详细信息页面现在会按预期加载。 以前,在为含特定税的订单加载订单详细信息页面时,applicationOpen Source引发以下错误:
Call to a member function getId() on array。
- 具有包括订单和送货权限的受限制权限的管理员,现在可以按预期查看订单页面。 以前,当具有这些权限的管理员尝试查看订单时,applicationOpen Source会引发错误。 GitHub-14633
- 现在,当设置了允许的最大数量限制时,购物者可以下单包括子可配置产品。
支付方式
- 购物者现在可以使用Braintree通过账单地址下订单,而无需在启用了3DS的部署中设置区域。 以前,当购物者单击 下订单 时,结帐会冻结,无法完成购买。 GitHub-34204
- 现在支持Venmo支付选项。
- PayPal现在可以通过BN代码进行跟踪。
- 从Magento Open Source 2.4.2-p1升级时,
bin/magento setup:upgrade现在可按预期运行。 以前,applicationOpen Source引发此错误:Unable to apply data patch Magento\Paypal\Setup\Patch\Data\UpdateBmltoPayLater for module Magento_Paypal。 GitHub-33678
- 现在,在管理员下订单期间,可使用正确的商店ID检索保存的信用卡。 现在,根据网站范围配置设置,在订购过程中会显示存储的信用卡。 以前,当管理员尝试从管理员为客户创建订单并选择存储信用卡方法时,存储卡没有选项。
- 已解决PayPal信用卡金额显示异常的问题。 以前,启用PayPal信用并配置多个礼品卡金额时,如果购物者更改了礼品卡价值的金额,店面不会更新分期付款的金额。 这是Magento Open Source 2.4.3中的一个已知问题。
PayPal
- 使用PayPal Express付款方式结账时,Magento Open Source不再显示错误。 以前,尽管签出过程已完成,但应用程序Open Source显示此错误:
Something went wrong。
- PayPal Express现在可从购物车中按预期工作。 以前,当您单击 PayPal 按钮以从购物车开始快速结帐时,应用程序Open Source引发此错误:
To check out, please sign in with your email address。 GitHub-33445
- PayPal Payflow Pro现在在部署中使用正确的父交易ID执行延迟捕获,其中具有 付款操作 的PayPal Payflow Pro网关设置为授权。 将 Sale 交易发送到Payflow,该交易具有在签出时创建的保险库令牌的父交易ID。 以前,已创建 延迟捕获 事务并发送到PayPal Payflow。 GitHub-33445
- 使用PayPal Payments Advanced付款完成付款后,购物者现在会按预期跳转到成功页面。 以前,即使成功处理付款并且没有记录错误,购物者也不会重定向到此页面。
性能
- 模块列表加载执行时间已缩短。
- 热门搜索词缓存的性能已得到改进。 以前,
search_query表越大,完成搜索查询所需的时间就越长。 GitHub-27559
- 默认情况下,Magento Open Source会在产品保存期间同步调整图像大小。 商家现在可以通过对
di.xml文件进行细微编辑来作为后台异步流程调整图像大小。
- 在多存储部署中,类别产品索引器的性能得到了改进。 GitHub-33984
- 用于
glob()系统调用的新内存缓存通过减少glob()调用数提高了性能。 GitHub-34025
- 改进了异步订单网格重新索引过程的性能。
- 产品导出期间的内存消耗已得到优化。
定价
- 现在,当产品价格接近或等于零,并且启用了共享目录时,价格排序可按预期工作。 以前,零级价格在价格重新索引过程中被忽略。
ProductAlert
- 新
product_alert使用者通过创建队列消息、运行该使用者并缩短执行时间,改进了客户警报的发送。 以前,在发送超过100,000个产品警报时, applicationOpen Source会引发内存不足异常。 应用程序Open Source还需要20多个小时才能发送所有警报。
- 如果“类别”页面上的价格过滤器不包含第二个值,则Magento Open Source不再引发错误。 以前,applicationOpen Source在日志文件中引发异常。
产品视频
- 添加视频时,如果输入不完整的URL,Magento Open Source现在会启用 保存 按钮并自动完成字段(管理员目录 > 产品 > 添加视频)。 以前,已禁用 保存 按钮,并且未填充字段。
审核
- 现在,产品列表视图会显示产品的正确星级评级。 GitHub-30196
- 当购物者单击storefront产品页面上的 审核 时,审核现在可按预期显示。
- 现在,店面产品列表页面上的Grid和List视图中的产品星级是一致的。 以前,同一产品在“网格”和“列表”视图模式中可能有不同的评级。
销售
- 在升级到MariaDB 10.2.34后,针对具有大型数据集的表以异步模式更新销售网格的性能得到了改进。
- Magento Open Source现在会按预期从店面帐户 > 我的订单 > 查看订单页面中删除HTML标记。 以前,applicationOpen Source在storefront客户订单评论部分中显示HTML标记。
- 已添加自动测试覆盖率以验证是否存在
sales_shipment_grid.order_id的索引。
POST V1/orders调用现在可更新扩展属性,而不会出现错误。 以前,会出现SQL语法错误。
Search search-heading
- 价格范围的分层导航选项现在可以按预期与自定义价格属性配合使用。 应用程序Open Source在筛选自定义价格属性时使用价格导航步骤的配置。 以前,applicationOpen Source使用手动步骤配置。
- 店面现在会在分层导航中显示当前类别的所有子类别,而不管目录中可用的类别数量如何。
- Elasticsearch目录搜索现在不区分变音符号。 以前,搜索不带重音符号的术语所产生的结果不同于搜索带有重音符号的相同术语所产生的结果。
- 现在,可以对包含特殊字符的SKU属性正确设置搜索权重。
category_name已添加到系统保留的产品属性代码。 如果用户尝试创建属性代码为category_name的产品属性,应用程序Open Source现在会显示错误。 以前,产品未列在预期类别中,并记录了Elasticsearch错误。
- 现在,在每个GraphQL搜索查询后都会更新常用搜索词。
- Magento Open Source现在将正确的价格字段添加到Elasticsearch价格指数映射中。 以前,使用商店ID而非网站ID向索引添加不正确的价格字段。
配送
- 装运电子邮件现在仅包含当前装运的跟踪编号。 以前,如果订单包含多个发运,则每个发运的电子邮件将包括与该订单相关的所有发运的跟踪编号。
- 现在,当购物者在多送货模式下从购物车中删除产品,然后切换到单个送货地址时,Magento Open Source会成功更新迷你购物车。 以前,产品价格没有按预期更新。
- 使用S3存储适配器时,现在可按预期导入表速率。 以前,applicationOpen Source显示此错误:
File "https://[bucket].s3.eu-central-1.amazonaws.com/[prefix]/tmp/phpLjGmHf" not found。 GitHub-33072
- 您现在可以按预期从商店 > 配置 > 销售 > 销售电子邮件禁用装运更新电子邮件。 GitHub-33165
- Magento Open Source现在在管理员和店面发票页总数上显示免运费(0)。 以前,当订单的发运量为零时,应用产品打开Source不会在发票页发运总量中显示发运总额。
- 对在线航运承运人的费率请求已从多个请求减少为一个。 现在可以正确计算每个项目/包的包保险和处理价格。 以前,applicationOpen Source显示的FedEx配送方式运费不正确。
- 在创建从波多黎各发运的发运标签时,Magento Open Source现在会显示UPS费率。 以前,applicationOpen Source不显示这些UPS速率。
- 从输入框中删除后,货运街道地址现在会按预期完全清除。 以前,删除地址后,文本框会保留一个或多个字符。
存储
- 现在,在包含位于不同URL上的多个商店的部署中,“以客户身份登录”功能可按预期工作。 以前,applicationOpen Source无法加载正确的商店,即使访问正确的商店域时也是如此。
税金
- 现在,当客户在选择了发往多个地址后删除项目时,Magento Open Source可正确计算迷你购物车小计。
- 现在,当购物车仅包含虚拟产品时,Magento Open Source会在所有结账页面上显示相同的税率。
- 现在,可配置产品的层级价格可在店面中显示准确的包含和排除税值。 以前,对于包含的税和排除的税,显示相同的值。 GitHub-33673
测试
- WebAPI测试现在与PHP 8.1兼容。 GitHub-34653
- 集成测试现在与PHP 8.1兼容。 GitHub-34567,GitHub-34569
-
商家现在可以测试购物者所在国家的购物者体验,而不是商人的位置。
-
功能测试已稳定以确保PHP 8.x兼容性。 GitHub-34327,GitHub-34188
- 修复了WebAPI测试中的功能问题。 GitHub-34196
- 修复了导致静态测试误报的错误。 GitHub-34056
- 已更新
call_user_func_array的测试覆盖率。 GitHub-34301
- 使用AWS Elasticsearch运行时,
Magento\GraphQl\CatalogGraphQl\ProductSearchTest测试不再引发此错误:Magento\GraphQl\CatalogGraphQl\ProductSearchTest::testSearchSuggestions Failed asserting that an array is not empty. /var/www/html/dev/tests/api-functional/testsuite/Magento/GraphQl/CatalogGraphQl/ProductSearchTest.php:94 /var/www/html/dev/tests/api-functional/framework/Magento/TestFramework/TestCase/GraphQlAbstract.php:257。
-
通过重命名所有模拟变量以包含
Mock后缀并移除对已弃用的Object Manager类的引用,修复了大量非关键单元测试警告。 GitHub-33695 -
Magento\Framework\MessageQueue\TopologyTest测试现在与RabbitMQ服务的AWS MQ兼容。 以前,此测试失败,并显示以下消息:Invalid exchange configuration: magento-topic-based-exchange1 Failed asserting that two arrays are equal。
- 单元测试现在与PHP 8.1兼容。 GitHub-34441
单元测试
以下单元测试已重构为使用PHPUnit而不是AspectMock:
AllureHelperTest GitHub-33294
ObjectHandlerUtil GitHub-33584
MockModuleResolverBuilder GitHub-33583
MagentoTestCase GitHub-33582
ModuleResolverTest GitHub-33308
ParallelGroupSorterTest GitHub-33306
SuiteGeneratorTest GitHub-33299
OperationDataArrayResolverTest GitHub-33296
主题
- 当Magento Open Source的基本URL中配置了子路径时,通知消息现在可以正确显示。
- 向店面页面模板添加了
aria-label元素,以指示购物者在单击链接时将导航到的页面。 以前,同一链接文本用于指向不同页面的链接。 GitHub-33075
- 加载具有预先存在的自定义主题的存储的主页时,Magento Open Source不再显示错误消息。 以前,applicationOpen Source显示此消息:
The store will not work correctly in the case when cookies are disabled。
翻译和区域设置
UserExpiration验证器在de_DE和uk_UA区域设置中不再失败。 以前,当管理员尝试在语言环境设置为de_DE或uk_UA的管理员中创建新用户时设置过期日期时,applicationOpen Source会引发错误。 GitHub-32497
- 在创建或编辑地址表单中,瑞士区域名称现在以英语显示的一致性。 GitHub-32602
- 更新了根西岛的
zip_codes.xml模式,以支持萨克岛的GY10邮政编码。 GitHub-33144
- 已将白俄罗斯地区添加到
directory_country_region表。 GitHub-33924
- 已解决显示异常,其中店面运行菲律宾(菲律宾)区域设置。 GitHub-33996
- 现在,在设置为葡萄牙语(葡萄牙)区域设置的商店中创建新帐户时,您可以成功输入客户出生日期。 以前,当您尝试创建帐户时,Magento Open Source会引发错误。 GitHub-34130
- 现在,产品详细信息页面已成功以阿拉伯语(沙特阿拉伯)区域设置显示。 以前,此区域设置会破坏产品详细信息页面。
UI
- 更正了使用
maps.googleapis.com的MFTF测试的错误。
- Magento Open Source现在会修剪来自联系我们的表单电子邮件输入字段中的不间断空格字符。 以前,提交表单时不会删除电子邮件输入中的不间断空格字符(如果给定),这会导致日志文件出现错误。 生成的发送给商店管理员的联系人电子邮件中还缺少 回复 字段。
- Magento Open Source现在会根据相关产品在管理员中的位置显示相关产品、追加销售产品和交叉销售产品。
- 在模式中使用
Multiselect时,.action-close按钮现在可按预期工作。 以前,action-close按钮不起作用,因为它继承了模式窗口.action-close按钮的CSS。 GitHub-27240
- 现在,产品视图中的主价格字段上提供了优惠代码片段。 以前,在产品视图中的相关产品块中的此字段缺少此代码片段,这会导致Google搜索结果显示错误的价格。 GitHub-34063
- 解决了运行iOS的设备上的模态高度问题。 GitHub-34467
- 现在,“操作”下拉菜单在整个店面中正确定位。 GitHub-31379
- 解决了在购物车和结账页面上导航时的辅助功能错误。 GitHub-34483
- 屏幕阅读器现在可以阅读产品页面上的所有相关表单元素。
- Storefront目录产品构件排序顺序(目录 > 类别 > 产品)现在与管理员中配置的顺序匹配。 GitHub-27126
- 现在,区域选择器可在创建帐户页面上按预期工作。 GitHub-30099
- 管理员客户网格现在可按预期显示所有客户数据,包括新添加的
date自定义属性。 以前,将date属性集设置为列时,applicationOpen Source引发错误,无法正确显示管理员客户网格。
- 目录 > 产品详细信息页面上的输入标签已更改,以准确反映输入的目的。 不需要用户输入的字段不再显示带有星号的标签。
- 现在可以使用Tab键访问富文本编辑器工具栏。
- 控件的可访问名称现在包含其可见标签的文本,其中包含每页项目数下拉列表。
- 当表折叠时,目录 > 产品详细信息页面上的表控件现在具有可见的标签和可访问的名称。
- 店面各处的按钮现在都有独特的描述性可访问名称。 以前,带有文本按钮和相邻向下箭头图标按钮的分割按钮具有相同的辅助功能名称。
- 在“管理员订单”和“金额”仪表板图表中添加了 今天 查看选项,以提供全天销售和订单的汇总。 GitHub-34008
- 多选 关闭 按钮的活动(点击)状态现在可以始终如一地工作。 GitHub-34338
- 禁用Cookie限制模式后,Magento Open Source升级后不再显示此消息:
The store will not work correctly in the case when cookies are disabled。 GitHub-33811
- 现在,全屏产品图像可在移动设备上具有垂直缩略图导航方向的主题中正确显示。 以前,产品图像在全屏模式下的移动设备上具有垂直缩略图导航方向的主题上无法正确缩放或不可见。
- 启用 将小组件产品与后端存储同步 配置设置时,产品详细信息页面中的错误消息不再快速消失。
- 在“新建退货”窗体的 要退货的数量 字段中添加了负值验证。
- 在启用了 地址搜索 配置设置的部署中,当购物者单击“审核和付款”页面上的 更改地址 时,Magento Open Source不再显示重复的地址。
- 在“管理员类别”页面上的商店视图范围中工作时,添加产品按钮现在按预期为权限受限的管理员启用。
- 现在,视图断点在Magento Open Source中是一致的。
- Magento Open Source现在可以在“管理客户”页面上正确显示具有自定义区域设置的自定义客户日期属性。
- 使用页面生成器添加的图像在浏览器窗口宽度为768像素时不再在店面中重复。 以前,使用此浏览器窗口宽度时,应用程序打开Source通过同时显示移动版本和桌面版本的图像,在店面中复制了图像。
URL重写
- 在执行
bin/magento setup:upgrade时创建新存储视图期间,不再为所有存储视图重新生成URL重写。 GitHub-32954
Web API框架
- 启用永久购物车后,对自我授权的客户资源的Web API请求不再引发授权错误。
- 您现在可以使用PHP 7.3上的
\Magento\Framework\Api\AbstractSimpleObjectBuilder的子类创建对象。 以前,当Magento Open Source在Redhat上使用PHP 7.3托管时,preg_match引发此警告消息:Warning: preg_match(): Compilation failed: unrecognized character follows...。
PUT /V1/guest-carts/:cartId/collect-totals请求检索的总数现在由正确的shippingMethod更新。 GitHub-18508
- 向REST API添加新反序列化程序时,不再删除其他反序列化程序。 以前,REST API接受新的内容类型,但CORE为API定义的内容类型不再有效,并返回400错误。 GitHub-26433
- 您现在可以删除
webapi.xml文件中定义的参数的覆盖。 GitHub-33843
- 现在,在多次连续失败的登录尝试后,Magento Open Source会按预期通过GraphQL或REST API请求生成
customertoken。 以前,applicationOpen Source不检查oauth_token_request_log中lock_expires_at的值是否大于当前日期和时间,并且始终返回失败尝试次数,这会阻止客户登录。 GitHub-34067
- 将遮罩的引用ID添加到
QuoteRepository::getList不再导致无限循环。 以前,使用依赖REST API更新订单的支付处理器触发此行为。 GitHub-33675
/rest/all/V1/categories/<above_created_category_id>PUT调用现在尊重available_sort_by指定的值。 以前,在“类别”页面上选择了“可用产品列表排序依据”下拉列表以及所有可能的选项,并选中了 全用 复选框。 GitHub-32596
- 用于创建客户令牌的REST API请求的性能已得到改进。
- 更正了 将存储代码添加到Url 设置为 是 并且REST调用不包含存储代码时发生的错误。 尽管有效负载有效,但调用返回了以下错误:
Fatal error: Allowed memory size of **​**​**​**​**​ bytes exhausted (tried to allocate ​**​** bytes) in vendor/magento/module-store/Model/StoreRepository.php on line 75。
- 现在可以使用REST API同时创建同一订单的部分发票。
愿望清单
- 禁用 在侧栏中显示 愿望清单选项后,Magento Open Source不再在类别侧栏中呈现愿望清单。 以前,applicationOpen Source忽略此选项。
WYSIWYG
- PageBuilder现在可以使用WYSIWYG编辑器正确呈现自定义小组件。
已知问题
问题:商家在从Adobe Commerce 2.4.4升级到Adobe Commerce 2.4.4-p1的过程中可能会注意到包版本降级通知。 可以忽略这些消息。 包版本中的差异是由于包生成期间出现异常造成的。 没有产品功能受到影响。 有关受影响的方案和变通方法的讨论,请参阅从2.4.4升级到2.4.4-p1🔗知识库文章后降级的包。
问题:当在管理员商店 > 配置 > 常规 > 国家/地区选项 > 允许国家/地区中未选择任何选项时,购物者无法将产品添加到购物车。 应用程序打开Source改为显示以下控制台错误: Failed to load resource: the server responded with a status of 400 (Bad Request)。
问题:查找合作伙伴和扩展 > Magento Marketplace上的Dotdigital说明已过时。 以下是更新的描述:
Dotdigital是一个客户参与平台,可帮助数字营销人员和开发人员在整个客户历程中提供通信。 我们利用客户数据的强大功能,推动品牌在增长和扩展过程中的参与、转化和忠诚度。 客户喜欢我们易用的平台,该平台可跨系统连接第一方数据、提供强大的见解并自动化预测性跨渠道消息。
Dotdigital拥有350多名员工,为世界各地和各行业的中端市场和企业公司提供服务。 我们渴望激发负责任的营销,并致力于可持续性、隐私和安全。 Dotdigital自豪地成为全球首个碳中和营销自动化平台,并获得ISO 14001、ISO 27701和ISO 27001认证。
有关购买和下载信息,请参阅Dotdigital — 营销自动化。
社区贡献
我们感谢更广泛的Magento Open Source社区,并感谢他们为这一版本做出的贡献。
社区工程团队Magento参与者按月、季度、年维护了主要参与人员和合作伙伴的列表。 从该参与者页面,您可以单击链接以转到GitHub上其合并的PR。
合作伙伴投稿
下表列出了合作伙伴所做的贡献。 此表列出了提出拉取请求的合作伙伴、外部拉取请求编号以及与其关联的GitHub问题编号(如果可用)。
个人贡献者
下表列出了来自社区成员的贡献。 此表列出了参与提取请求的社区成员、外部提取请求编号以及与其关联的GitHub问题编号(如果可用)。
系统要求
我们的技术栈栈是基于PHP和MySQL构建的。 有关详细信息,请参阅系统要求。
安装和升级说明
您可以使用编辑器安装Magento Open Source 2.4.4。
迁移工具包
数据迁移工具有助于将现有Magento 1.x存储数据传输到Magento 2.x。 此命令行界面包括验证、进度跟踪、日志记录和测试功能。 有关安装说明,请参阅安装数据迁移工具。 考虑浏览或参与数据迁移存储库。
代码迁移工具包可帮助将现有Magento 1.x存储扩展和自定义项传输到Magento 2.x。 命令行界面包括用于转换Magento 1.x模块和布局的脚本。