[仅限PaaS]{class="badge informative" title="仅适用于云项目(Adobe管理的PaaS基础架构)和内部部署项目上的Adobe Commerce 。"}

Magento Open Source 2.4.5发行说明

Magento Open Source在平台质量、支付方法、GraphQL缓存性能和可访问性方面做出了改进。 其中包括对集成的Google模块的更新。

此版本包括290多项质量修复和增强功能。

NOTE
Adobe Commerce版本可能包含向后不兼容的更改(BIC)。 要查看与向后不兼容的更改,请参阅BIC参考。 在BIC亮点中描述了严重的向后不兼容问题。 并非所有发行版本都引进了主要BIC。

其他发行信息

虽然这些功能的代码与Magento Open Source核心代码的季度发布捆绑在一起,但其中几个项目也单独发布。 每个项目的文档中都提供了特定于项目的单独发行信息,其中记录了这些项目的错误修复。

Magento Open Source 2.4.5功能亮点

在此版本中查找以下要点。

安全性增强

此版本包括20项安全修复和平台安全改进。 此安全修复程序已回溯到Magento Open Source 2.4.4-p1和Magento Open Source 2.3.7-p4。

到目前为止,尚未发生与这些问题相关的已确认攻击。 但是,可能会利用某些漏洞访问客户信息或接管管理员会话。 这些问题中的大多数要求攻击者首先获得对管理员的访问权限。 因此,我们提醒您采取一切必要步骤保护您的管理员,包括但不限于以下工作:

  • IP 列入允许列表
  • 双重身份验证
  • 使用VPN
  • 使用唯一位置而不是/admin
  • 良好的密码卫生

有关这些已修复问题的最新讨论,请参阅Adobe安全公告

其他安全增强功能

此版本的安全改进改进了与最新安全最佳实践的符合性,包括:

  • reCAPTCHA支持已添加到愿望清单共享、新建客户帐户和礼品卡表单中。

  • ACL资源已添加到清单。

  • 增强了清单模板的安全性。

  • MaliciousCode筛选器已升级为使用HtmlPurifier库。

平台增强功能

Magento Open Source 2.4.5现在支持

  • 编辑器2.2

  • TinyMCE (5.10.2)。 早期版本的TinyMCE(v5.9.2或更早版本)允许在更新巧尽心思构建的URL或具有巧尽心思构建的URL的图像时执行任意JavaScript。

  • jQueryUI (1.13.1)

  • PHPStan (^1.5.7,带约束) GitHub-35315

DHL集成模式已从v6.0更新到v6.2。此升级不会导致产品行为发生变化。

过期的JavaScript库已更新到最新版本,并且已删除过时的依赖项。 这些更改向后兼容。

编辑器依赖项更新

以下编辑器依赖项已更新到带有约束的最新版本:

  • colinmollenhour/credis (1.13.0)
  • guzzlehttp/guzzle (^7.4.2)
  • laminas/laminas-captcha (已使用约束^2.12更新)
  • laminas/laminas-db (^2.15.0)
  • laminas/laminas-di (^3.7.0)
  • laminas/laminas-escaper (~2.10.0)
  • laminas/laminas-eventmanager (^3.5.0)
  • laminas/laminas-feed (^2.17.0)
  • laminas/laminas-mail (^2.16.0)
  • laminas/laminas-mvc (^3.3.3)
  • laminas/laminas-server (^2.11.1)
  • laminas/laminas-servicemanager (^3.11.0)
  • laminas/laminas-validator (^2.17.0)
  • league/fly (2.4.3)
  • monolog/monolog (^2.5)
  • phpmd/phpmd (^2.12.0)
  • phpstan/phpstan (^1.5.7)
  • phpunit/phpunit (~9.5.20)
  • php-cs-fixer (^3.4.0)
  • webonyx/graphql-php (14.11.6)

已删除laminas/laminas-sessionlaminas/laminas-textlaminas/laminas-view依赖项。

其他升级和更换

  • DHL集成架构已从v6.0更新到v6.2。

  • USPS装运的默认网关URL已更新为使用https而不是http

  • 已将Froogaloop库替换为Vimeo Player.js库(2.16.4)。

  • grunt-eslint (NPM)库已升级到最新版本。

  • jQuery Storage库已替换为julien-maurel/js-storage

  • php-cs-fixerphpcs静态代码分析工具现在与PHP 8.x兼容。

  • glob.js依赖项(已使用约束升级到~7.2.0)

  • serve-static.js依赖项(使用约束~1.14.2升级)

  • underscore.js依赖项(NPM) (1.14.2)

  • moment-timezone-with-data.js (0.5.34)

  • jquery/jquery-cookie已替换为js-cookie/js-cookie

  • 已更新jarallax.jsjaralax-video.js库以使用最新版本的Vimeo REST API。

辅助功能更新

此版本的重点在于在Venia (PWA)上创建更易感知、可操作、可理解和强大的店面体验。 这些增强功能包括:

  • 搜索结果摘要信息现在向屏幕阅读器用户公布
  • 现在,当加载新页面视图时,将通知屏幕阅读器
  • 对比度和键盘辅助功能已得到改进

Google Analytics

Google通过与GTag集成,更新了Web应用程序中AdWords和Analytics的跟踪和集成机制。 将Google功能集成到网站页面中,增加了通过Google服务跟踪和管理内容的机会。 Adobe Commerce有一组内置模块,包括Google AdWords、Analytics、Optimizer和TagManager,它们利用以前的API与Google服务集成。 在此版本中,我们使用GTag方法重新实现了此集成​。 请参阅从analytics.js迁移到gtag.js (Universal Analytics)

GraphQL

GraphQL性能增强包括:

  • 开发人员和管理员在部署或更改生产环境中的属性时,可以更快地重建统一店面GraphQL架构。 如果必须出于任何原因重建GraphQL架构,购物者还会体验到显着加快的页面加载速度。

  • 添加了通过在GraphQL API中使用JSON Web令牌(JWT)来使用授权令牌的过期日期/时间的功能。

  • bin/magento config:set graphql/session/disable 1命令允许商家完全禁止为所有GraphQL操作创建会话Cookie。 默认情况下,应用程序Open Source会创建这些Cookie并依赖它们进行授权,这会影响性能。 将来,我们建议使用令牌作为授权GraphQL请求的唯一形式。 我们不建议单独使用会话Cookie或将其与授权令牌结合使用。 查看GraphQL授权

  • 现在,只有在需要时才会使用类代理在GraphQL操作中启动会话Cookie。

  • 会话使用情况已从GraphQL中的http标头处理器中删除,例如商店、客户或货币。

有关这些增强功能的详细信息,请参阅GraphQL开发人员指南

库存

增强了清单模板的安全性。

页面生成器

Page Builder v.1.7.2与Magento Open Source 2.4.5兼容。

Page Builder列布局包括以下增强功能:

  • 列现在已公开,允许用户控制店面上的列设置。

  • 列大小调整现在支持由用户操作触发的换行。

支付

Apple Pay现在可供运行启用了Payment Services的部署的所有商户使用。 此付款方法不要求购物者输入其信用卡或借记卡详细信息。 Apple Pay可在产品详细信息页面、迷你购物车、购物车和结帐工作流中找到。 商家可以启用此功能。

PayPal

  • 西班牙和意大利的商家现在可以提供PayPal Pay Later给购物者。

  • 现在,管理员可以在结帐、迷你图、购物车和产品页面中预览PayPal、信用和稍后支付按钮。 预览会显示这些按钮在店面中启用和呈现时的外观。

Braintree

  • Braintree已停止集成KOUNT防欺诈功能。 该代码已从Magento Open Source代码库中移除。

  • 始终请求3DS ​选项已添加到管理员中。

PWA Studio

PWA Studio v.12.5.x与Magento Open Source 2.4.5兼容。

此版本的新增功能包括:

  • 购物者行为数据是在PWA Studio店面中为Web分析服务收集的。 商家现在可以根据需要订阅和扩展这些活动。

  • 商家现在可以从管理员(Google Tag Manager)中选择要部署的服务。

有关增强功能和错误修复的信息,请参阅PWA Studio版本。 有关PWA Studio版本及其兼容的Magento Open Source核心版本的列表,请参阅版本兼容性

修复的问题

我们已在Magento Open Source 2.4.5核心代码中修复了数百个问题。

安装、升级、部署

  • 您现在可以重命名数据修补程序,并将旧类名作为别名添加到patch_list数据库表中。 现在,Magento Open Source在应用修补程序之前,会检查数据库中是否已存在数据修补程序别名。 以前,在这些情况下,applicationOpen Source会引发错误。
  • 当您尝试从管理员将管理员URL更改为自定义URL时,Magento Open Source不再引发异常。 以前,在更改管理员URL后,您无法登录。 GitHub-35416
  • 商家现在可以成功地从带Klarna的Magento Open Source 2.4.2部署升级到Magento Open Source 2.4.3。GitHub-33760
  • Magento Open Source Analytics的路径不再进行硬编码。 以前,当一台服务器上安装了多个Magento Open Source实例时,此硬编码路径会导致冲突。 GitHub-29373

辅助功能

  • 购物袋 ​按钮现在提供其状态的编程或文本指示。 屏幕阅读器用户将收到通知:单击此按钮将展开其他内容,或者相关内容已展开或折叠。 以前,此按钮不提供其状态的编程或文本指示。
  • 付款信息信用卡选项文本元素或文本图像现在符合WCAG 2.0的要求,标准文本的最低颜色对比度为4.5:1,即18pt (24px)或14pt (19px)(如果已加粗)。 以前,它们不满足预期的对比度。
  • 通讯簿 > 通信 > 帐户信息 ​自定义焦点指示器现在提供的对比度至少为背景色的3:1。
  • 筛选器 ​和​ 排序 ​按钮文本现在符合WCAG 2.0要求的标准文本的最低颜色对比率为4.5:1,即18pt (24px)或14pt (19px)(如果加粗)。 以前,轮播的导航按钮不符合这些最低对比度要求。
  • 当导航到Venia页眉和页脚时,屏幕阅读器仅会朗读“Venia”一词一次。 以前,同一个词连续两次被宣布。
  • 触发下拉列表的按钮现在向屏幕阅读器提供信息,指示其展开或折叠状态以及可访问名称。
  • 在呈现新页面视图时,将通知屏幕阅读器用户。 以前,当页面标题发生更改时,不会宣布标题发生了更改。

Adobe Stock

  • 用户现在可以成功注销Adobe Stock。

捆绑产品

  • 您现在可以使用PUT /V1/products端点更新特定网站的产品价格属性。 以前,如果为特定商店视图覆盖了某些产品属性,则无法在同一商店视图中更新该产品的价格属性。
  • 现在,当应用产品子选择规则时,Magento Open Source可正确计算捆绑产品的购物车总计。

缓存

  • 刷新Magento Open Source缓存并启用use_stale_cache后,Admin中不再显示已禁用全页缓存。
  • 刷新缓存时,New Relic部署标记现在可按预期工作。 GitHub-32649

购物车和结账

  • 签出工作流的帐单步骤上的地址搜索弹出窗口不再导致DOM错误。
  • addProductsToCart突变现在可以正确用于多个产品。 以前,此查询返回第一个具有准确小计的产品,但返回其他产品的小计0。
  • 现在可处理由SKU添加的受限产品的权限异常。 购物者现在可以在店面看到相应的消息,并且错误表中的数量字段已禁用。 以前,applicationOpen Source引发如下异常: There has been an error processing your request
  • 已优化在禁用购物车价格规则后更新受影响报价的SQL查询,以避免锁定整个报价表。
  • 禁用访客结帐后,具有全局帐户共享的购物者不再需要在多站点部署中登录到辅助网站。 现在,当购物者导航到子域时,将加载客户数据。 购物车将不再被要求再次登录,并且会显示之前的购物车内容。
  • 当在多地址结帐中删除单个数量地址项时,结帐工作流中的地址下拉列表值不再更改报价中的其余项。 以前,当在多地址签出过程中从报价中删除某个产品时,所有产品的地址下拉列表值都将更改为默认值。
  • 当产品缺货时,cart查询不再返回null响应。 已将包含错误消息的新errors元素引入响应。 以前,当您使用缺货产品运行查询时,应用程序Open Source在响应中的null部分下显示items值。 查看购物车查询
  • 当访客购物者在将产品添加到购物车后创建帐户,然后再继续结帐时,配送方式现在可按预期使用。 以前,当访客在创建帐户之前将产品添加到购物车时,在结帐期间没有可用的配送方式。 将其他产品添加到购物车后,即可使用配送方式。
  • 未在​ 允许国家/地区 ​字段中选择任何选项时,购物者现在可以将产品添加到其购物车。
  • 当​ 启用持久性 ​设置为​ ​时,会话超时后,购物车内容和登录状态现在会按预期重新加载。 GitHub-35182
  • 现在,当购物者针对具有多个配送地址的订单从配送页面导航到结账工作流中的购物车页面时,可以正确更新迷你购物车小计。 以前,小计是两倍。
  • 现在,启用​ 启用持久性 ​后,迷你购物车会在会话超时后显示以前添加的产品。 GitHub-35183
  • 商家现在可以创建贷项通知单,其中​ 退款发运(包括 税) ​设置为–0.01,现在可以将此金额设置为0。 以前,不能在这些条件下创建贷项通知单。

购物车价格规则

  • Parent Only属性范围现在已在购物车规则条件中正确使用。

目录

  • 当通过PUT /V1/products/更新商店视图的产品名称时,产品URL密钥现在保持不变。 以前,新的URL密钥是根据新的产品名称生成的,并分配给产品,它覆盖了该商店视图中的URL密钥。
  • 将产品从Page Builder产品小组件设置为轮播模式添加到类别时,不再触发页面重新加载。
  • 设置为​ 无法单独显示 ​的产品不再出现在目录高级搜索结果中。
  • 现在,可在“批量属性更新”页面上正确更新动态包属性。 以前,动态SKU ​属性仍设置为​ ,即使它们在批量更新页面上被禁用也是如此。
  • 现在,可以使用增量索引器而不是完全重新索引来正确应用目录规则。
  • 现在,您可以在多页产品列表的列表视图和网格视图之间成功切换。 以前,当您在切换到网格视图之前导航到多页产品列表视图的最后一页时,应用程序Open Source显示以下错误: Unfortunately there are no products in this category on our website currently
  • 管理员操作日志报告现在会按预期显示更新的产品ID和更新的状态信息。
  • 完全重新索引后,触发器现在按预期恢复到catalogrule_product_price表。 以前,在catalogrule_product_pricecatalogrule_rule完全重新索引后,已从catalogrule_product表中删除触发器。
  • 用于将产品分配给类别的类别规则不再随机更改。
  • 具有范围受限访问权限的管理员无法再全局更新类别。 以前,当多个网站使用同一类别但产品不同时,并且权限仅限于一个商店的管理员更改了该类别中的产品时,其他商店的产品选择也会更改。
  • 现在,当使用指定区域设置的非默认货币时,产品详细信息页面会显示正确的价格。 以前,店面上的数字本地化达不到预期。
  • 现在,在尝试检索具有重复记录的产品的层级价格时,API和店面会显示相同的错误消息。 以前,PUT /V1/products/tier-prices返回不正确的错误消息。
  • 现在,当您尝试添加带有尾随连字符的产品URL密钥时,Magento Open Source会提供验证错误消息。 还提供信息性工具提示文本。
  • 新的ConfigurableWishlistItem.configured_variant字段已替换ConfigurableWishlistItem.child_sku字段。 当客户希望列表包含未配置的可配置产品时,后一个字段触发了内部错误。
  • 现在,在批量属性更新期间只为选定的存储生成URL重写,以更改产品可见性。 以前,批量属性更新会为错误的存储创建URL重写。
  • 启用Synchronize widget products with backend storage设置后,应用程序Open Source将最近查看的产品数据添加到catalog_product_frontend_action数据库表中。 在添加记录时,它包括客户或访客ID。 如果客户ID和访客ID为空,则响应中的recently_viewed_product部分现在为空。 因此,在发送customer/section/load Ajax请求时,应用程序Open Source可以根据客户或访客ID正确筛选最近查看过的产品。 以前,响应包含catalog_product_frontend_action数据库表中所有可用的数据,因为没有检查是否有空的客户或访客ID。
  • 管理员现在可以从“管理员”幻灯片面板中更改购物车中的可配置产品选项。 以前,幻灯片面板无法正常工作。
  • 现在,在保存对子产品的更改时,可配置产品父项的页面缓存会按预期清除。 以前,由于未清除缓存,因此不会在storefront配置产品页面上选择更改。 GitHub-34508
  • 现在,产品列表在Admin中正确呈现。 以前,产品列表未呈现,Magento Open Source显示此错误: Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already existsGitHub-33145
  • 目录价格范围从​ 网站 ​更改为​ 全局 ​后,产品详细信息页面和多商店部署中的店面搜索中的产品价格现在相同。 以前,目录搜索结果页面显示​ 全局 ​价格,产品详细信息页面显示​ 网站 ​价格。 GitHub-34074
  • 当​ 价格导航步骤计算 ​设置为​ 手动 ​时,分层导航现在会按预期显示价格最高的产品。
  • 启用​ 记住类别分页 ​后,您现在可以更改类别中显示的每页产品限制。 以前,Cookie form_key和UI form_key不同,Magento Open Source显示此错误: Invalid Form Key. Please refresh the page
  • EAV索引器现在将产品ID处理为类型int,以防止可能出现的性能问题。
  • 现在,在添加名称中包含“。”的新图像后,可成功生成新的产品缓存 到某个产品,然后保存该产品并清理图像缓存。 GitHub-32699
  • 现在,当您尝试在不填写管理员字段的情况下从产品页面创建属性时,Magento Open Source会按预期显示错误消息。 GitHub-33099

  • 现在,当主页包含多个目录列表时,所有目录产品列表上的产品评级均正确。 GitHub-33867

可配置的产品

  • 现在,在产品详细信息页面上更改其数量后,Magento Open Source会通过选定的选项显示可配置产品的正确产品价格。 以前,在数量更改后,价格会重置为初始值。
  • products查询现在检索可配置产品的价格,这些价格准确地反映了​ 显示缺货 ​配置设置。 以前,查询不会返回准确的价格。
  • 可配置选项现在链接到使用POST /V1/configurable-products/configurable1/child在Admin中创建的可配置产品。
  • 现在,多选属性可在产品编辑期间正确保存。 以前,applicationOpen Source在保存产品时保存了非选定属性的默认选项以及选定属性。
  • Magento Open Source现在会在通过修补程序脚本创建全局select属性的过程中按预期显示可配置属性。 以前,符合条件的全局属性会被隐藏。
  • addConfigurableProductsToCart突变现在可用于添加具有自定义选项的可配置产品。 以前,applicationOpen Source引发此错误: Magento 2.3.4 graphql Notice: Undefined index: option_value in /var/www/html/mg234/vendor/magento/module-configurable-product-graph-ql/Model/Resolver/ConfigurableCartItemOptions.php on line 62GitHub-28860

  • 您现在可以对具有可选自定义选项的可配置产品重新排序。 以前,重新排序尝试失败,这意味着显示此错误: Some of the selected options are not currently availableGitHub-35409

  • addConfigurableProductsToCart突变现在可按预期用于多个产品。 以前,返回的产品信息不正确,或者返回的错误消息无效。 GitHub-30948

客户

  • Magento Open Source现在会根据店面的网站设置正确显示预定义的EAV系统属性。 以前,为一个网站启用并为另一个网站禁用的网站级别客户属性将显示为两个网站均已启用。

可下载

  • 您现在可以从可下载的产品中删除示例链接和文件。 GitHub-31887

电子邮件

  • 系统颁发的电子邮件现在已成功发送给具有“”的收件人。 — ”时,发送电子邮件给团队。
  • 客户现在可以按照正确的时间表收到有关其放弃购物车的电子邮件提醒。 新的TIMESTAMPDIFF(DAY, ,) SQL函数已替换TO_DAYS()函数,并根据日期和时间计算时间戳的差异。 以前,不会按计划发送电子邮件提醒,因为不正确地计算购物车放弃的两个日期时间值(任何时区)和服务器时间(UTC)。
  • 当购物者单击​ 下单 ​后输入无效的电子邮件格式时,Magento Open Source现在会在“送货”页面上显示错误消息。 以前,错误消息显示在“付款”页面上。 [GitHub-33590]​(https://github.com/magento/magento2/issues/33590

框架

  • bin/magento setup:config:set命令不再覆盖app/etc/env.php中已设置的缓存ID前缀。
  • bin/magento setup:static-content:deploy -s compact命令现在按预期包括子主题中的样式。 以前,主题CSS文件在部署后不在店面上。
  • 已添加新sniff以检查void元素中是否使用了闭合斜杠。
  • 为产品分配新源并更改其数量后,Magento Open Source不再引发SQL错误。 GitHub-35262
  • 属性排序顺序现在按更新后di.xml文件中指定的顺序运行。
  • updateCartCurrency函数现在设置了字符串,而不是购物车对象内的对象。 以前,applicationOpen Source不使用getQuote加载引号,因为updateCartCurrency函数在购物车对象中设置了一个对象而不是字符串。 GitHub-34199
  • 由于\DateTimeFormatter::formatObject(),单元测试中不再出现弃用通知。 此方法现在可按预期使用$format的数值。
  • Magento Open Source在管理员中不再显示preg_replace()错误。 第三个参数($subject)现在的类型为array|string,而不是bool
  • isFreeShipping方法现在返回整数而不是布尔值。GitHub-35164
  • 在为类vendor/magento/module-backend/Model/Menu.php的任何方法创建插件时,Magento Open Source不再引发以下错误: Error: Call to undefined method ReflectionUnionType::getName()GitHub-35292
  • 现在,当您导航到店面上的/checkout/sidebar/updateItemQty/?item_qty=error时,Magento Open Source会返回404错误,而不是500错误。 以前,引发此错误: Warning: A non-numeric value encountered in /vendor/magento/module-checkout/Controller/Sidebar/UpdateItemQty.php on line 69GitHub-34380
  • 在配置了AMPQ连接但未配置SSL时,Magento Open Source不再触发trim(): Passing null to parameter #1 ($string) of type string is deprecated错误。
  • 已将longblog数据库定义更正为long blobGitHub-35108
  • 包含单引号的挖空文本现在可翻译。 GitHub-34319
  • TypeError中的magento2/app/code/Magento/Security/Model/AdminSessionsManager.php已从int更正为stringGitHub-34415
  • .htpasswd已添加到nginx配置文件中禁止的位置。 GitHub-35150
  • 通过将Magento_Ui/js/core/app作为deps添加到app/code/Magento/Ui/view/frontend/requirejs-config.js,类别产品列表页面的加载时间已缩短。 GitHub-34847
  • ProductRepository.php:get方法现在返回一次缓存键。 以前,他们被送回两次。 GitHub-34958
  • 向cron作业的异常处理程序中创建的新异常添加了错误消息。 GitHub-34941
  • GraphQl-GroupedProductGraphQl模块的自述文件已更新。 GitHub-34951
  • 店面打印订单/发票/贷项通知单页面不再显示默认的Luma徽标,而是已指定在网站上显示的徽标。 GitHub-34942

常规修复

  • 将最大会话大小设置为0 (管理员​ 存储 > 设置 > 配置 — 高级)不会再注销管理员。 GitHub-35312
  • 现在,当您从管理员添加分配给非默认网站的新客户地址时,会根据客户所分配的网站正确加载客户地址属性配置设置。
  • 通过Page Builder添加捆绑产品时,Magento Open Source不再引发异常。
  • 现在,您可以在iOS设备上创建一个客户帐户,其名字中带有斜撇号(')。 以前,只允许使用直撇号,使用iOS 11+默认斜撇号会导致Name is not valid!错误。
  • products查询现在返回的产品信息可准确反映“显示相关产品”配置。 GraphQL ProductInterface中的related_productsupsell_productscrosssell_products字段现在分别根据“显示相关产品”、“显示追加销售产品”和“显示交叉销售产品”配置进行了解析。
  • 现在,通过批量产品批量更新将​ Set Product设置为New ​属性时,Set Product as New From Date ​属性显示正确的日期。 以前,将产品设置为新的起始日期 ​显示为​ 1970年1月1日
  • 不再自动授予具有受限角色的用户访问新模块的权限。
  • 相关产品规则条件现在可以按预期处理包含multiselect属性的产品。
  • 商家现在可以向产品比较添加层价格属性(tier_price)。 以前,当为此属性启用​ 店面上的可比较内容 ​设置时,产品比较页面崩溃。 GitHub-35244
  • 现在,当您设置无效的Cookie域(存储 > 配置 > Web > 默认Cookie设置Cookie域)时,Magento Open Source会显示错误消息。 以前,网站崩溃。 GitHub-35048
  • 当职责范围限定为单个网站的管理员使用PageBuilder将产品添加到内容元素时,Magento Open Source不再引发错误。 以前,applicationOpen Source引发SQL错误。
  • 在编辑和添加地址页面上的街道地址第二行添加了验证。 现在强制实施在秒上指定的最小和最大文本长度。
  • 升级后,在Admin中创建目录规则时,Magento Open Source不再引发以下错误: A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later
  • 在单击​ 共享愿望清单 ​之前,激活​ 在此处选中以将RSS馈送链接到愿望清单 ​复选框,Magento Open Source不再引发错误。 GitHub-34998
  • 显示密码 ​复选框(“客户登录”、“客户注册”、“客户编辑”(“更改密码”部分)和“客户设置新密码”表单)的标题现在可翻译。 GitHub-34857
  • 更新了app/code/Magento/NewRelicReporting/etc/adminhtml/system.xml中的标签和评论描述。 GitHub-31947
  • 已删除不需要的csp_whitelist.xml文件。 GitHub-30607

GraphQL

  • GraphQL price_range类型中添加了缺少的BundleItemOption属性。 GitHub-35010
  • 禁用products在搜索结果中使用​ 分层导航设置时, ​查询不再返回作为聚合的属性。 GitHub-33318
  • price_including_tax字段已添加到CartItemPricesGitHub-29057
  • new_from_data中的new_to_datefieldsProductInterface不再被弃用。 GitHub-34783
  • 在获取类别列表时,categories查询不再引发异常,因为其中某个类别包含无法在文件系统上找到的映像。 以前,applicationOpen Source引发此异常: Category image not foundGitHub-34266
  • products查询现在按预期返回category_uid作为聚合。 GitHub-32557
  • 当产品库存达到最大库存量时,updateCartItems突变现在会按预期删除产品。 GitHub-30220
  • 当多个主页具有相同的标识符时,urlResolver查询现在可以正确解析路径分隔符(/)。 以前,查询不会解析分隔符并返回空值。 GitHub-33615
  • customer查询现在在查询订单时按预期获取捆绑产品多选选项。 GitHub-34717
  • 发出Magento Open Source请求后,GraphQL会话不再结束。 以前,ClearCustomerSessionAfterRequest插件会注销购物者。 GitHub-34550
  • 启用products显示缺货产品​ 配置设置后,现在可以正确计算 ​查询响应中的可配置产品价格范围。 以前,在计算最低和最高价格时会考虑禁用的选项。
  • 现在,当按位置排序时,products查询返回正确过滤的多个类别。
  • setShippingAddressesOnCart请求现在已成功验证区域ID。 以前,当您使用地区ID而不是地区代码时,applicationOpen Source会引发错误。
  • products查询现在仅返回与请求中传递的存储关联的类别。
  • 现在,当在标头中指定存储时,categoryList查询会返回反映查询存储的根类别的结果。 以前,即使标头中指定了其他存储,默认根类别中的类别也会包含在结果中。
  • 禁用products在搜索结果分层导航中使用​ 设置时, ​查询不再返回作为聚合的属性。 GitHub-33318
  • cart查询现在仅返回免费订单的一种付款方式。 以前,查询响应中会返回所有活动的支付方法。 GitHub-34036
  • products查询不再返回受禁用的变体影响的可配置产品的price_range值。 GitHub-33629
  • collectQuoteTotals调用之前添加了一个插件,以确保不会多次应用商店积分。
  • generateCustomerTokenAsAdmin突变现在会按预期检索客户令牌。 以前,不会返回令牌,而是返回此错误: Customer email provided does not exist
  • 现在,定义自定义type产品属性后,GraphQL架构有效。 以前,架构无效,因为产品类型的type属性被自定义type属性覆盖。 GitHub-34929
  • 添加或更新了createCustomercreateCustomerV2updateCustomerupdateCustomerV2突变的客户现在添加了活动的新闻稿订阅。 以前,即使请求包含正确的输入参数,客户也会取消订阅新闻稿。 GitHub-33599
  • 针对特定商店视图的products查询现在仅返回多站点部署中特定网站的根类别中的类别。 以前,查询返回其他网站的根类别中的类别。 GitHub-34570
  • products查询现在仅返回提供的类别ID的子类别。 以前,它会返回所有类别。 GitHub-35220
  • 当响应中指定了customerOrders对象,但礼品消息不存在时,gift_message查询现在按预期进行响应。 以前,查询返回此消息: Can't load gift message for order is returnedGitHub-28957
  • 修复了catalog_category_product索引器的错误,该错误导致products查询从其他存储返回类别。 GitHub-31253
  • 在生成客户令牌后,generateCustomerToken突变现在会按预期在customer_log中创建条目。 GitHub-33378

Google Analytics

  • Google标签模块已添加到代码库,该代码库支持在2023年7月迁移到Google Analytics 4。 您当前可以在Google Universal Analytics资产中使用和收集新数据,但Google Universal将于2023年7月终止生命周期。 GitHub-35204GitHub-35376

图像

  • 产品详细信息页面上的图像不再闪烁,并且图像会按预期保持居中。 以前,在产品详细信息页面完成加载图像后,图像会明显向下移动。

导入/导出

  • 现在,在重新生成CSV文件之前从管理员中删除交叉销售产品后,导出CSV中相关的、追加销售和交叉销售产品位置是正确的。 以前,删除交叉销售产品后不会重新计算交叉销售产品位置,并且产品位置订单不正确。
  • 现在,在导出报表时,Magento Open Source会先检查自定义视图,然后再筛选列。 以前,导出的报告不考虑自定义视图,并且导出的列不正确。
  • Magento Open Source现在可成功导入文件名较长的图像。 以前,applicationOpen Source未导入图像并引发此错误: Imported resource (image) could not be downloaded from external resource due to timeout or access permissions in row(s):
  • 类别ID属性现在在计划的导出过滤器中可用。
  • 捆绑包含问号(?)的产品 由于改进了populateExistingOptions方法中的查询生成器,现在可以成功导入选项标题中的。 选项标题也会正确显示。 以前,在初始导入后,连续导入会导致行为损坏和选项数加倍。 购物者也无法将该产品添加到购物车中。
  • 添加了在导入期间验证类别名称的功能。 以前,applicationOpen Source不验证类别名称,这会在类别名称超过255个字符时导致错误。
  • 现在,在插入新记录之前,将删除catalog_url_rewrite_product_category表中的现有记录。 以前,在多商店产品导入期间出现以下错误: SQLSTATE[23000]: Integrity constraint violationGitHub-34210

基础架构

  • 已弃用的上下文菜单插件已从插件列表中删除。
  • 由于为TinyMCE中的工具栏引入了delayedRender逻辑,页面生成器模块中的TinyMCE编辑器工具栏相关逻辑已更新。
  • 争用条件不再中断contentUpdated事件侦听器的创建。 GitHub-32068
  • getTypeID函数现在返回的是产品类型ID,而不是产品ID。 GitHub-35458
  • jQuery UI滑块和SelectMenu映射已在vendor/magento/module-theme/view/base/requirejs-config.js中更正。

  • 放置在sales_order_state_change_before上的观察者现在支持从订单对象中检索数据。 sales_order_state_change_before event参数已更新。 GitHub-26789

  • indexer:reset已重构为调用$indexer->invalidate()GitHub-34988
  • 现在,您可以在htmlClass属性值中使用冒号符号,这支持使用其他组件,例如Tailwind UI。 GitHub-34430

记录

  • 现在,客户、客户地址和订单操作在管理员操作报表中正确记录。 以前,如果配置设置中未指定postDispatch处理程序,则applicationOpen Source不会记录操作。

MFTF

操作组

在以下测试中,重复性操作已替换为操作组:

AdminConfigurableProductChildrenOutOfStockTest GitHub-32378
AdminCreateStoreViewTest GitHub-34631

新测试

AdminUnlockAdminUserEntityTest GitHub-34836

StorefrontNewsletterSubscriptionWithEnabledNeedToConfirmConfigTest GitHub-33344

重构的测试

AdminCancelTheCreatedOrderWithCashOnDeliveryPaymentMethodTest GitHub-33692

新闻稿

  • 在“管理员”>“营销”>“新闻稿订阅者”中,已登录的客户不再标记为来宾。
  • 现在,如果将客户分配给非默认存储区,并且订阅或取消订阅了管理员,则新闻稿订阅确认电子邮件在​ 发件人 ​字段中提供了正确的存储区特定电子邮件地址。 以前,客户收到一封电子邮件,默认电子邮件位于​ From ​标头中。 GitHub-34963
  • 新闻稿电子邮件模板中的取消订阅URL现在可按预期工作。 GitHub-33310

订购

  • 现在,在编辑订单后,访客客户详细信息保存成功。 以前,某些客户详细信息丢失,包括customer_firstnamecustomer_lastname, x_forwarded_for
  • 在产品或全局设置级别上禁用​ 小数数量 ​时,商家无法再创建具有小数总数量的贷项通知单。 以前,商家可以为不适用的小数总数量创建贷项通知单。
  • 现在,当首选项中设置的时区与本地计算机上设置的时区不同时,按日期过滤可正确用于发票、发货、贷项通知单、CMS页面和CMS块网格。 以前,错误地解析日期,过滤的结果包括设置日期范围以外的数据。
  • 当您在管理员帐户编辑页面上更改分配给客户的主要电子邮件地址时,Magento Open Source不再更改分配给订单的自定义电子邮件地址。 以前,在编辑客户的主电子邮件地址时,新电子邮件地址会分配给为该客户创建的每个订单。 GitHub-34397
  • 现在,在运行PHP 7.4的部署中,Magento Open Source在贷项通知单网格页面上显示所请求存储中的记录。以前,在您创建贷项通知单并尝试查看它后,applicationOpen Source引发以下错误: The store that was requested wasn't found. Verify the store and try again
  • Magento Open Source现在在“贷项通知单网格”页面上显示从商店视图(其名称前面有数字)创建的订单的贷项通知单。 以前,applicationOpen Source显示错误: The store that was requested wasn't found. Verify the store and try again. Exception in /var/www/html/vendor/magento/module-store/Model/StoreRepository.php:75GitHub-35122
  • Magento Open Source现在在管理员和店面发票页总数上显示免运费(0)。 以前,当订单的装运量为零时,应用产品打开Source不会在发票页装运总数中显示装运总金额。
  • increment_id表中的sales_order列已增加。 以前,假定sales_order.increment_id的长度为50个字符的第三方模块只保存了increment_id的前32个字符。 GitHub-34521

支付方式

  • 管理员现在可以使用PayPal PayflowPro支付方式向管理员下单。 以前,applicationOpen Source显示此错误: No such entity with cartId = 0
  • 使用Venmo、PayPal Later或PayPal进行付款时,结账工作流中的“付款复查”页面现在显示正确的付款方式名称。
  • cart查询不再返回免费订单的所有有效付款方式。 GitHub-34036

Braintree

  • 商家现在可以针对通过Braintree使用Apple Pay支付的订单提交部分退款。 这是Magento Open Source 2.4.4中的一个已知问题。

PayPal

  • 现在,Magento Open Source在通过PayPal支付的访客订单中显示正确的客户名称。 以前,客户名称显示为Guest。
  • createPaypalExpressToken突变的解析程序已更新,以正确使用use_paypal_credit输入字段中指定的值。 以前,它尝试使用无效的paypal_credit字段。 GitHub-35180

性能

  • 通过为可配置产品的关联产品数据缓存添加TTL(过期日期),改进了Redis缓存管理。 以前,如果将Redis键逐出策略配置为易失性逐出策略,则不会由于缺少TTL值而逐出这些缓存。
  • 新的Grid Filter Condition Type客户/客户地址属性控制属性筛选器如何与数据库中的属性值匹配,选项包括Partial MatchPrefix MatchFull Match
  • 目录搜索全文索引器已重新定位到存储循环之外,这简化了重新索引过程。 GitHub-33984

定价

  • 现在,在默认范围中没有值(但在存储视图级别定义)的价格属性可以正确编制索引。 以前,从EAV表中检索价格属性值的SQL表达式不考虑默认范围中未定义该值的情况。
  • 现在,产品详细信息页面上列出的价格与层价格在结账工作流中列出的价格相同,层价格因所选数量而异(例如,某个产品的定价因购买2件产品而非5件产品而有所不同)。 以前,结账价格反映的是最低产品数量的价格。

ReCAPTCHA

  • 在ReCaptcha完全加载之前,“登录”和“创建帐户”页面上的​ Submit ​按钮现在处于非活动状态。

角色

  • 当“角色资源”选项卡上的资源访问设置为​ 自定义 ​时,存储 > 配置 > 服务 ​页面现在会按预期显示Magento Open Source Web API信息。 GitHub-35506

Search search-heading

  • 在分层导航中按色板过滤产品会在修复后显示产品的正确图像。
  • int配置为可搜索的后端type属性时,Elasticsearch查询现在可以按预期工作。 以前,applicationOpen Source引发Elasticsearch\Common\Exceptions\BadRequest400Exception异常。
  • 现在,您可以在Elasticsearch查询中将搜索同义词与​ 要匹配的最少搜索词 ​参数一起使用。 以前,如果在设置中指定此参数并为特定关键字添加了搜索词,则搜索不会返回任何结果。
  • 在启用了搜索建议和每个建议的​ 显示结果计数 ​设置的部署中,Magento Open Source现在在店面上显示准确的搜索结果建议计数。 以前,关键字旁边显示的计数为零。
  • 现在,目录页面上按自定义属性排序的产品按预期顺序显示。 以前,产品按属性选项值ID排序,这反映了其添加到属性的顺序。 GitHub-33810
  • 在分层导航中按色板过滤产品现在可显示正确的产品图像。 以前,分层导航PageCache键不包含可配置产品的过滤器参数。
  • 修复了catalogsearch/advanced/result和上的PHP错误 catalogsearch/advanced/index页。 以前,当数组在任何高级搜索字符串中传递时,Magento Open Source会显示此错误: Warning: trim() expects parameter 1 to be string, array given | magento/module-catalog-searchGitHub-33586

配送

  • 如果未选择允许的配送方式,Magento Open Source在加载UPS配送费率时不再引发错误。 以前,在这些情况下,当购物者在结帐工作流中输入配送地址时,不会显示其他配送方式,并且Magento Open Source在店面显示错误。 GitHub-34411
  • 计算表费率运费金额中现在不包括虚拟产品价格。 以前,这些产品的运输成本计算不正确。GitHub-35185
  • 现在,对于已应用折扣优惠券的订单,价格为零的表费率发运费率会在结帐工作流的“订单汇总”块中正确显示。 以前,不显示送货方法。

税金

  • 现已为购物车中的产品正确显示固定产品税(FPT)。 以前,如果购物车中的多个产品启用了​ 固定产品税(FPT) ​和​ 对FPT征税,则所有FPT都将分配给购物车中的最后一个产品,并重置为其他产品。
  • 现在,已正确计算结账工作流中订单摘要部分的固定产品税(FPT)总额。
  • Magento Open Source现在会按预期在简单产品的数量发生更改后,更新产品页面上简单产品的排除税层价格。
  • 商店配置页面中添加了验证,以验证从下拉列表中选择的国家/地区是否位于欧盟国家/地区列表中。 “验证增值税号码”按钮现在仅对EU国家/地区可见。 以前,该按钮对所有国家/地区均可见,包括英国。
  • 当​ 目录 ​中的“显示产品价格”设置为​ 不含税 ​或​ 含税和不含税 ​时,现在可正确计算层价格。 以前,产品详细信息页面显示包含税费的层价格,尽管进行了设置。
  • 现在,使用葡萄牙语言环境对店面中任何有效地址的订单正确应用了税。 GitHub-34271
  • 返回cart时,subtotal_with_discount_excluding_tax查询不再包含税。 GitHub-33905
  • 订单数据(GET /V1/orders/)的Web API请求不再返回行总计的负值。

测试

  • 使用AWS Elasticsearch配置运行时,更正了Magento.GraphQl.CatalogGraphQl.ProductSearchTest.testSearchSuggestions中的错误。
  • testCreateProductOnStoreLevel集成测试不再导致数据库上出现嵌套事务。

  • 在PHP 8.1上未设置产品图像时,为Send Friend功能运行WebAPI测试时不再出现以下异常: exception main.ERROR: /var/www/html/lib/internal/Magento/Framework/DataObject.php:131 strpos(): Passing null to parameter #1 ($haystack) of type string is deprecatedGitHub-34864

翻译和区域设置

  • 您现在可以使用翻译内联工具多次编辑同一元素。 以前,只包括使用此工具进行的第一次更改。
  • 编辑管理员文本或标签时,商店视图选择器不再阻止翻译窗格。 您现在可以从翻译窗格中编辑这些功能,单击​ 提交 ​后,界面会显示这些更改。
  • 巴西葡萄牙语和法语语言环境的管理日期时间格式现在有效。
  • 为名称验证器添加了重音符号(&amp;grave;)字符,以便可以为包含此重音符号的名字或姓氏创建客户帐户。
  • “产品详细信息”页面上​ 添加到购物车 ​按钮上的文本现在仍保持为相关区域设置中指定的语言。 在translate_strategy=embedded时,翻译文件现在会根据区域、主题和区域设置转换为相应的JavaScript文件。 以前,将产品添加到购物车后文本会还原为英语。
  • 搜索同义词现在遵循其分配的存储范围。 以前,分配给特定存储的同义词可在任何其他存储上搜索。
  • 菲律宾(菲律宾)区域设置问题已得到解决。 GitHub-33996

UI

  • 目录 > 产品 ​网格中过长的产品名称现在使用字形括起来,而不是显示在一行中。
  • 最小和最大出生日期范围现在保存为正确的时间戳,然后从有效的时间戳转换为有效的日期格式。
  • magento.com的不可用性不再导致管理员登录期间出现性能问题。 添加了对获取版本通知的请求超时。
  • 现在,在Chrome浏览器中显示管理员订单、客户和产品网格过滤器的结果时,这些结果会按预期保留。
  • 启用Magento_LoginAsCustomerAdminUi且​ 登录目标商店视图 ​设置为手动选择时,您现在可以从管理员创建客户。 以前,applicationOpen Source引发此错误: (Magento\Framework\Exception\LocalizedException): Unable to get Customer IDGitHub-33096
  • 现在,当购物者到达产品图像库中的最后一个缩略图图像时,“下一步”箭头会按预期禁用。
  • Search by keyword ​输入字段现在在aria-labelCatalog > Product 页面上具有 ​元素而不是占位符。
  • 管理员页脚中的“隐私政策”链接现在链接到新的Adobe隐私政策。
  • 当在生产模式下启用JavaScript捆绑包时,管理员现在可以访问管理员菜单选项。 GitHub-35325
  • 管理员现在可以将当前用户的过期日期设置为大于2038并成功保存用户。 以前,过期日期已更改的用户在注销后无法重新登录。
  • 当管理员尝试在管理员​ 商店 > 属性 > 客户地址 ​中保存街道行过多的地址时,Magento Open Source现在会显示信息性错误消息。 管理员现在可以删除额外的地址信息并成功保存该地址。 以前,applicationOpen Source会提交额外的行,但不会保存数据。
  • 数据库和本地存储中的产品列表视图配置已更新。 现在,在页面重新加载和视图更改期间,将保存自定义网格视图。
  • 启用网站限制后,您现在可以在商店视图之间切换。 以前,存储视图切换器的问题会阻止切换存储视图。
  • Favicon图标上传表单现在支持.ico文件类型。 以前,当您尝试在Admin中上载具有此扩展类型的favicon文件时,应用程序Open Source显示以下错误: Warning: imagecreatefromstring(): one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully in /var/www/html/vendor/magento/module-media-storage/Model/File/Validator/Image.php on line 64GitHub-34858
  • 更正了管理网格中下拉选择菜单的显示问题。 GitHub-35386

URL重写

  • 特定商店视图中产品的URL现在会从url_rewrite表和Admin中删除,因为特定商店视图的属性代码可见性状态已更改为​ 不可单独显示。 以前,在url_rewrite表中删除了产品的所有URL。 GitHub-34937

视频

  • 您现在可以使用页面生成器使用YouTube URL参数来添加新视频。 以前,这些参数会自动从URL中删除。
  • 当CSP设置为banner时,您现在可以将Vimeo视频设置为在restrict mode元素的后台运行。 以前,applicationOpen Source引发JavaScript错误。

Web API框架

  • 已对订单实施互斥,以防止在并发请求更新期间出现争用情况。 以前,在并发REST API调用期间出现的争用情况会导致“已订购的管理项目”表中的发运状态信息发生覆盖。
  • 现在,除非通过REST API更新特定商店视图中的产品时在有效负荷中明确定义,否则将保留产品图像角色继承。
  • Swagger架构(/rest/schema)现在使用唯一的操作ID。
  • 现在,通过POST /V1/salesRules/端点创建的购物车价格规则在将状态从disabled更改为enabled后保留现有优惠券代码值。 GitHub-35298
  • 通过POST /V1/salesRules/端点创建的购物车价格规则现在包含有效的from_dateto_date值。 GitHub-35265
  • CartItemInterface现在包括customizable_optionsGitHub-31180
  • 启用Magento_ReCaptchaWebapiRest模块后,REST API批量PUT和DELETE请求现在可按预期工作。 GitHub-35348
  • Bulk Rest API现在可与可配置产品的bySku选项配合使用。 以前,它返回500错误。
  • 使用POST /V1/products/special-price端点创建新的特殊价格计划现在可按预期运行。 以前,终结点返回此错误: Future Update already exists in this time range. Set a different range and try again
  • /V1/products/base-prices终结点现在可与​ 目录价格模式 — 网站 ​一起按预期工作。 GitHub-30132

愿望清单

  • 现在,从愿望清单页面更新项目数量会按预期更新产品详细信息页面上的数量。 应用程序Open Source现在从产品URL中选取更新的值,并从愿望清单本身填充产品详细信息页面的qty字段。

已知问题

问题:启用Braintree后,管理员用户无法从管理员中为客户创建订单或重新订单。 当管理员用户单击​ 订单 ​或​ 重新订单 ​时,Adobe Commerce不提交订单,并且system.log显示以下错误: report.CRITICAL: Error: Call to a member function getMethodInstance() on null in /app/vendor/paypal/module-braintree-core/Block/Form.php:174解决方法BUNDLE-3137-composer.patch现已可用。 请参阅启用Braintree付款时,管理员无法创建订单/重新排序知识库文章,了解有关此问题的讨论以及对修补程序的访问权限。 Adobe Commerce 2.4.5-p1中也包含修复。

社区贡献

我们感谢更广泛的Magento Open Source社区,并感谢他们为这一版本做出的贡献。

社区工程团队Magento参与者按月、季度、年维护了主要参与人员和合作伙伴的列表。 从该参与者页面,您可以单击链接以转到GitHub上其合并的PR。

合作伙伴投稿

下表列出了合作伙伴所做的贡献。 此表列出了提出拉取请求的合作伙伴、外部拉取请求编号以及与其关联的GitHub问题编号(如果可用)。

个人贡献者

下表列出了来自社区成员的贡献。 此表列出了参与提取请求的社区成员、外部提取请求编号以及与其关联的GitHub问题编号(如果可用)。

系统要求

我们的技术栈栈是基于PHP和MySQL构建的。 有关详细信息,请参阅系统要求

安装和升级说明

您可以使用编辑器安装Magento Open Source 2.4.5。

recommendation-more-help
1d4eef6c-fef1-4e61-85eb-b58d7b9ac29f