Adobe Commerce 2.4.2发行说明
Adobe Commerce 2.4.2不仅在性能和安全性方面进行了增强,而且在平台方面也进行了显着改进。 安全增强功能包括扩展对所有Cookie的SameSite
属性的支持。 B2B改进侧重于支持采购订单的在线支付。 现在支持Elasticsearch7.9.x和Redis 6.x。
此版本包括对核心代码的280多项新修复和35项安全增强功能。 其中包括我们的社区成员解决近290个GitHub问题。 这些社区贡献的内容包括对核心代码进行次要清理,以及GraphQL中的重大增强。
此版本中修复了2.4.1中识别的所有已知问题。
应用AC-3022.patch
以继续将DHL作为装运承运人提供
DHL已引入架构版本6.2,并且将在不久的将来弃用架构版本6.0。 支持DHL集成的Adobe Commerce 2.4.4及更早版本仅支持版本6.0。部署这些版本的商家应尽早应用AC-3022.patch
,以继续将DHL作为装运承运人提供。 有关下载和安装修补程序的信息,请参阅应用修补程序以继续将DHL作为运输运营商提供知识库文章。
安全补丁可用
商家现在可以安装时效性安全修复,而无需应用完整季度版本提供的数百个功能修复和增强功能(例如,2.4.1-p1)。 修补程序2.4.0.12(Composer包2.4.1-p1)是一个安全修补程序,针对我们以前的季度版本2.4.1中发现的漏洞提供了修补程序。此安全修补程序中包含应用于2.4.1版本的所有修补程序。 (修补程序 提供对已发布版本的修补程序,该版本可解决特定问题或错误。)
有关安全修补程序的一般信息,请参阅Introducing the New Security Patch Release。 有关下载和应用安全修补程序(包括修补程序2.4.1-p1)的说明,请参阅快速入门本地安装。 安全修补程序仅包括安全错误修复,而不包括完整修补程序中包含的其他安全增强功能。
其他发行信息
虽然这些功能的代码与季度版本捆绑在一起,但其中的多个项目(例如B2B、Page Builder和Progressive Web Application(PWA) Studio)也单独发布。 每个项目的文档中都提供了特定于项目的单独发行信息,其中记录了这些项目的错误修复。
高亮
在此版本中查找以下要点。
显着的安全增强功能
此版本包括35项以上的安全修复和平台安全改进。 所有安全修复均已回溯到2.4.1-p1和2.3.6-p1。
超过35项安全增强功能,可帮助消除远程代码执行(RCE)和跨站点脚本(XSS)漏洞
到目前为止,尚未发生与这些问题相关的已确认攻击。 但是,可能会利用某些漏洞访问客户信息或接管管理员会话。 这些问题中的大多数要求攻击者首先获得对管理员的访问权限。 列入允许列表因此,我们提醒您采取一切必要步骤来保护您的管理员,包括但不限于:IP身份验证、双重身份验证、使用VPN、使用唯一位置而非/admin
以及良好的密码卫生。 有关这些已修复问题的讨论,请参阅Adobe安全公告。
其他安全增强功能
此版本的安全性改进包括:
-
所有核心Cookie现在都支持
SameSite
属性。 -
现在,当用户尝试在产品和类别说明字段中保存值时,应用程序会显示可识别潜在恶意内容的消息。
-
跨组件的文件系统操作已经标准化和强化,以防止恶意上传。
-
已修复核心内容安全策略(CSP)违规。
基础架构改进
此版本包含对核心质量的增强,这些改进了Framework以及以下功能区域的质量:客户帐户、目录、CMS、OMS、导入/导出、促销和定位、购物车和结账、B2B以及暂存和预览。
平台增强功能
-
现在支持Elasticsearch7.9.x。 虽然我们建议运行Elasticsearch7.9.x,但版本2.4.x仍与Elasticsearch7.4.x兼容。
-
2.4.2已通过清漆6.4测试。 版本2.4.x仍与Varnish 6.x兼容。
-
现在支持 Redis 6.x。 版本2.4.x仍与Redis 5.x兼容。
-
2.4.2现在与 Composer 2.x 兼容。 我们建议商家迁移到Composer 2.x。虽然您可以使用Composer 1.x安装此版本,但Composer 1.x的生命周期将很快终止。 有关Composer 2.x功能的概述,请参阅Composer 2.0现已可用!
在此版本中,将安装配置为使用拆分数据库的功能已被弃用。 当前使用拆分数据库的商家应该开始计划恢复或迁移到单个数据库,或者使用替代方法。 有关此问题的概述,请参阅Adobe Commerce🔗 DevBlog文章中的弃用拆分数据库功能。 有关迁移说明,请参阅从拆分数据库还原到单个数据库。
性能增强
此版本包括代码增强功能,可提高具有大型目录的部署的API性能和管理员响应时间。 多个可扩展性增强使2.4.2能够本机支持比以前版本多20倍的复杂目录。
GraphQL
此版本添加了GraphQL涵盖以下功能的功能:
-
添加了对多个愿望清单的支持。 您可以使用GraphQL来创建、删除和重命名愿望清单,以及在它们之间移动](https://developer.adobe.com/commerce/webapi/graphql/mutations/move-products-between-wishlists.html)或复制个项目。[
-
增加了对退货授权(RMA)的支持。 购物者可以申请退货。 如果商家接受请求,购物者可以执行任务,例如添加评论和添加跟踪信息。
-
添加了对以下B2B功能的支持:
-
添加了对GraphQL中工会活动的支持。 GitHub-29425
-
添加了对比较列表的支持。 购物者可以创建和删除比较列表,以及将添加和删除项目至比较列表。 此外,以访客身份创建比较列表的购物者可以客户身份登录,并保留其比较列表。
-
添加了
generateCustomerTokenAsAdmin
突变并更新了Customer
对象以支持远程购买帮助。 -
添加了跨商店的本地化支持,以支持更改语言、购物车和货币等任务。
-
GraphQL架构已得到增强,可优化具有许多变体的可配置产品的产品数据检索。
-
已弃用整数类型对象ID,以支持类型ID的
uid
属性。 -
已将
staging
属性添加到ProductInterface
和CategoryInterface
,以确定产品是否已暂存,并查看其关联的促销活动信息。
有关这些增强功能的详细信息,请参阅GraphQL开发人员指南。
B2B
2.4.2引入了B2B v1.3.1。此版本包括支持采购订单的在线付款以及多个错误修复。
现在可以使用在线付款方式完成采购订单。 在初始结帐期间,系统会提示B2B购买者为每个采购订单选择其首选付款方式。 在采购订单获得批准后,系统将提示采购员输入付款详细信息,以将采购订单转换为最终订单。
要支持完整的接受在线支付工作流程,此功能还:
-
在初始结帐期间覆盖现有的支付方式模板以保持PCI合规性。
-
维护与第三方、自定义和社区开发的支付方法的兼容性。
-
当采购员需要向批准的采购订单添加付款详细信息时,通过电子邮件通知他们。
-
允许从管理员自定义电子邮件,允许商家使用与其品牌一致的模板。
-
为采购订单引入
Approved – Pending Payment
状态以明确显示何时需要操作。 -
防止在最终付款步骤中添加或删除折扣代码,从而确保已批准采购订单的订单总额保持不变。
-
允许买方在最终付款步骤中更改付款方式,以保持灵活性并提高转化率。
此版本还包括多个错误修复。 请参阅B2B发行说明。
PWA Studio
此版本的PWA Studio包括:
-
国际化和本地化。 Venia现在支持多种语言和货币。
-
改进了可扩展性框架,通过扩展支持代码更改。
-
与“我的帐户”相关功能(如愿望清单、保存的付款、通讯簿和订单历史记录)的初始组件。
-
各种性能优化和错误修复。
有关增强功能和错误修复的信息,请参阅PWA Studio版本。 有关PWA Studio版本及其兼容版本的列表,请参阅兼容性。
页面生成器
此版本包括对页面生成器内容迁移和页面生成器CSS自定义的增强:
-
开发人员现在可以按视区以不同的方式设置内容类型输出的样式,而无需使用
!important
指令。 -
迁移到页面生成器的内容不再使用默认内联样式进行填充。
-
Page Builder不再要求将所有内容类型放置在一行中。 Page Builder阶段现在最初为空白,并且支持将以下内容类型直接添加到阶段:行、列、选项卡、HTML代码、块、动态块。
-
内容类型不再需要预定义的边距和填充。
-
通过表单字段值的新移动设备视区切换器和视区范围,用户和开发人员可以执行以下操作:
-
创作时查看不同视图端口上的内容。
-
针对每个视区的不同内容类型优化最小高度字段参数。 (开箱即用仅支持一个参数(最小高度)。 需要自定义开发来启用其他内容参数的移动优化。)
-
将字段范围添加到自定义字段和字段集(开发人员)。
-
交互式产品内指南
交互式产品内指南从管理员处为商家提供有关新功能公告、演练指南、入门信息和工具提示的使用提示和信息。 如果未启用此功能,管理员必须选择从管理员处加入,才能接收产品内指南。 查看使用情况数据收集和管理员使用情况。
Adobe Stock集成
此版本包括Adobe Stock集成v2.1.1。
媒体集
媒体集的新角色资源。 此版本使商家能够限制管理员仅访问媒体集,并控制谁可以执行这些操作:
-
将媒体资产插入内容
-
上传资源
-
编辑资源详细信息
-
从媒体集中删除资源
-
管理文件夹结构。
内容 中的 Web优化图像。 商家现在可以在内容中使用Web优化图像演绎版,而不是高分辨率图像。 原始图像在媒体集中保持未修改状态,并且当图像插入到内容中时,动态生成图像演绎版。
AWS S3支持增强功能
Amazon Simple Storage Service (AWS S3)支持已得到增强,现包括对以下各项的支持:
-
对象存储和未来的可扩展性
所有模块都添加了对AWS S3的支持,包括B2B、PageBuilder和Adobe Stock集成。
功能测试框架(MFTF)
MFTF 3.2.1现已推出。 此发行版本在测试和测试包生成中都引入了容错。 功能测试框架更改日志中介绍了其他增强功能和错误修复。
Order Management System (OMS)
MCOM连接器与2.4.2完全兼容。有关连接器的错误修复和增强功能,请参阅连接器发行说明。 此版本包括对OMS命令行界面的改进,现在可提供合作伙伴和支持团队可用于对retry
、queue_prune
、order_sync
、message process
和catalog export
进程进行故障排除的详细信息。
供应商开发的扩展
有关此版本功能和更改的更新,请参阅以下文章:
修复的问题
我们已在2.4.2核心代码中修复了数百个问题。
安装、升级、部署
- 在此版本中,将安装配置为使用拆分数据库的功能已被弃用。 请参阅Adobe Commerce🔗 DevBlog文章中的弃用拆分数据库功能。
- 商家现在可以成功地将运行MySQL 8.x的Open Source部署升级到Commerce部署。 以前,对于升级期间添加了
row_id
的所有表,AUTO_INCREMENT
值恢复为初始值时,应用程序会引发异常。
- 如果运行
bin/magento/setup:db:generate-patch
时出错,应用程序现在会显示一条错误消息,该消息标识用于创建修补程序的路径。 GitHub-27523
- 执行
bin/magento/setup:upgrade
后,block_html
、full_page
和layout
缓存现已按预期禁用。 GitHub-28186
bootstrap.php
中所需的最低PHP版本已更新。 GitHub-30004
- 现在,您可以在安装示例数据后执行
bin/magento/setup:upgrade
。 以前,当您尝试执行bin/magento/setup:upgrade
时,应用程序显示此错误:unable to apply data patch magento\catalogrulesampledata\setup\patch\data\installcatalogrulesampledata for module magento_catalogrulesampledata
。 应用程序还在系统日志中显示此错误:main.ERROR: Sample Data error: Unable to unserialize value. Error: Syntax error
。 GitHub-30685
- 现在,您可以按预期从命令行设置YouTube API密钥。 以前,当您尝试执行
bin/magento config:sensitive:set catalog/product_video/youtube_api_key
时,应用程序返回此错误:There are no sensitive configurations to fill
。
- 应用程序现在接受在
queue_consumer.xml
中定义的maxMessages
值。 以前,应用程序仅使用部署配置值。 GitHub-29522
- 使用
bin/magento setup:config:import
创建存储时,新存储的URL生成现在可按预期工作。 以前,生产环境中不会生成URL重写。 GitHub-30025
- 当您运行
bin/magento setup:install
以连接到现有数据库时,应用程序不再显示此问题:Overwrite the existing configuration for db-ssl-verify?[Y/n]
。 GitHub-29612
AdminGWS
- 对于权限受限的管理员,商店 > 属性 > 评分 页面上的 添加新评分 按钮和 保存、删除、重置 按钮不再可用。
- 管理员现在仅显示来自登录管理员具有权限的网站的数据。 以前,管理员显示部署中所有网站的数据。
- 现在,所有选定的网站都存储在
gws_websites
中,无论网站ID的大小如何。 以前,网站ID会被截断,并且所选网站的列表不会存储在数据库中。 未正确保存用户角色,当商家尝试更改并保存角色时,应用程序显示此错误:The "X" store ID is incorrect. Verify the store ID and try again
。
- 对于受限管理员用户,应用程序现在会在管理网格中显示正确的项目计数。 以前,这些网格显示的计数反映所有国家/地区的数据,而网格本身只显示特定国家/地区的数据。 (此修复修复了客户区段、目录价格规则、购物车价格规则、“所有用户”、“锁定的用户”和“用户角色”网格的问题。)
- 权限不包括
Magento_Catalog::edit_product_design
(编辑产品设计)的管理员现在可以通过在所选商店视图中保存具有新名称的现有产品来创建新产品。 以前,应用程序显示此错误:Not allowed to edit the product's design attributes
。 GitHub-28106
- 当管理员缺少创建这些实体的相应权限时,应用程序不再在 存储 >属性下的页面上显示 添加属性 按钮。 以前,当不具有相应权限的网站管理员尝试创建 属性集 或 客户 属性时,应用程序会引发404错误。
- 安装Adobe Commerce后,当您尝试使用
ssh
容器更改backend-frontname
时,应用程序不再引发错误。 GitHub-26762
Adobe Stock集成
- 添加了对读取
exif_image.png
或exif-image.jpeg
元数据的支持。 GitHub-1449
- 您单击媒体集的默认视图书签时显示的内容不再进行过滤。 以前,默认视图包含从
url-filter
应用程序应用的筛选器。 GitHub-1813,GitHub-1789,GitHub-1780
- 已从WYSIWYG OnInsert控制器(
Magento\Cms\Controller\Adminhtml\Wysiwyg\Images\OnInsert::execute()
)中删除逻辑并将其添加到Model\Wysiwyg\Images\PrepareImage::execute()
模型。 GitHub-1504
- 已从
media-content:sync
命令(\Magento\MediaContentSynchronization\Console\Command\Synchronize::execute
)中删除区域模拟。 GitHub-1784
分析
- 现在,高级报告可按预期方式用于同一域中的多个环境。 以前,由高级报表生成的CSV文件失败,因为双引号会使用反斜杠进行转义,而不是按照CSV标准RFC4180的要求使用另一个双引号进行转义。
- 现在,使用默认端口或非默认端口连接到
env.php
中的MySQL时,analytics_collect_data
作业将成功运行。 以前,analytics_collect_data
在您使用非默认端口时引发错误。
- 由
analytics_collect_data
生成的CSV文件现已正确转义。 以前,这些文件生成时没有正确的转义,这会阻止生成清单报告。
Braintree
-
现在,购物者可以使用Apple Pay成功订购虚拟产品。 以前,应用程序引发此错误:
There are no shipping methods available for you right now. Please try again or use an alternative payment method
。 -
现在,默认的PayPal Express结帐付款方法可按预期用于Braintree信用卡付款方法。 以前,启用Braintree信用卡支付方式时,应用程序不显示 PayPal 按钮。
捆绑产品
- 应用产品不再为报价中的固定价格捆绑产品子项设置价格。
- 现在,当捆绑产品包含缺货产品时,价格排序可按预期运行。 以前,按降序排序的价格不按降序显示产品。
- 当存在多个选项时,应用程序现在会自动为捆绑产品选项应用缺省数量1。 以前,商家必须手动为每个选项分配默认数量。
- 订单发票创建页面现在会按预期显示捆绑产品的子产品。 GitHub-27350
- 现在,当您以自定义价格重新订购捆绑产品中的简单产品时,应用程序会分配正确的产品价格。 以前,在捆绑产品上设置自定义价格会导致重新订购时附加的简单产品价格不正确。 GitHub-30343
- 调用POST
/V1/order/{orderId}/ship
以发送包含捆绑产品的订单,现在会将该订单标记为按预期完成。 以前,应用程序显示此错误消息:You can't create a shipment without products
。 GitHub-9762
购物车和结账
- 现在,当自定义地址属性显示在结账工作流的配送步骤上时,配送方式估算器可按预期工作。 以前,应用程序显示此错误消息:
{"message":"Error occurred during \"custom_attributes\" processing. A custom attribute is specified with a missing attribute code. Verify the code and try again."}
GitHub-27505
- 当购物者删除购物车中的唯一项目时,应用程序现在会按预期在迷你购物车中显示
You have no items in your shopping cart
消息。 以前,当购物者删除单个项目且应用程序显示此消息时,checkout/cart/removeFailed
的购物车数据未更新:1 product requires your attention
。
- 对于不适用的发运方法,应用产品不再显示订单的发运成本。 以前,对于结账工作流中不适用的配送方式,应用程序显示的价格为0。
- 现在,在取消选中结账工作流上的 我的帐单和送货地址相同 复选框时,会选择客户的默认帐单地址。
- 管理员可以通过SKU将产品从管理员添加到购物车,而无需从管理员处重定向到其他位置。 管理员不再重定向到店面页面,并且应用程序按预期在“管理员购物车项目”部分显示产品。
- 现在,当您按SKU将产品添加到购物车时上传包含多种错误类型的CSV文件时,应用程序会显示信息性错误消息。 以前,当您在 管理购物车 > 通过SKU添加到购物车 中单击 选择文件 时,应用程序会显示空白页面和一般错误消息。
- 当购物者在不同域中从一个商店切换到另一个商店时,购物车内容不再丢失。
- 现在,购物者可以在使用多种配送方式时,使用多个地址的结帐功能成功完成订单。 以前,应用程序显示此错误:
There has been an error processing your request
。 GitHub-30197
- 现在,当购物者从购物车更改商店视图时,应用程序会在结账工作流的配送页面上显示正确的默认国家/地区。
- 现在,当访客购物者登录后,在注销后密码重置后清除客户会话时,应用程序会排除当前会话。 以前,当购物者重置密码时,应用程序会清空购物车。
- 当购物者更改购物车中的商店视图时,应用程序现在为商店视图显示正确的默认国家/地区。 以前,在购物车中更改商店视图时,默认国家/地区不正确。
- 目录权限的配置顺序不再阻止具有正确权限的管理员将产品添加到购物车。 以前,应用程序不验证当前客户组的
addToCart
配置设置。 因此,当管理员尝试将产品添加到购物车时,应用程序会引发错误。
- 已删除对购物车上
/rest/V1/guest-carts/cart_id/totals-information
端点的冗余调用,这改进了购物车性能。 以前,当购物者将产品添加到购物车,然后查看购物车时,应用程序多次调用collectAddressTotals
方法。
- 禁用 如果国家/地区允许选择状态 设置是可选的,则应用程序不再显示签出工作流中国家/地区的 区域 字段。 GitHub-30747
- 从管理员重新订购订单后,应用程序不再重复店面结账工作流中的送货地址。
- 已更正
AdminMediaGalleryInsertLargeImageFileSizeTest
的设计问题。
- 在
customer_is_guest field
中,quote
表中所有来宾的新记录现在都分配了值1。 以前,对于将产品添加到购物车的每个新访客,在quote.customer_is_guest
字段中为记录分配了0。
- 签出工作流的“审核和付款”部分上的 提交 按钮已移至
<form id="purchaseorder-form"...></form>
内部,这使得隐式表单提交成为可能,而无需更改任何JavaScript。 GitHub-27925
- 禁用 如果国家/地区允许选择状态 设置是可选的,则应用程序不再在签出工作流上显示 区域 字段。 GitHub-30747
- 当购物者在结帐时通过多个地址单击 更新购物车 时,应用程序现在可以正确更新购物车的商品小计。 GitHub-30408
- 对于当前未安装的付款方法,当存在
config.xml
节点时,应用程序不再引发异常。 以前,应用程序在签出期间引发异常。 GitHub-29555
- 现在,应用程序在迷你购物车中正确呈现包含特殊字符的产品名称。 GitHub-29075
- 应用产品现在为表费率设置正确的折扣包。 以前,应用程序在计算表费率时不会应用为购物车设置折扣的购物车规则。 GitHub-30169
购物车价格规则
- 现在,在计算订单小计时按预期应用购物车价格规则,而不考虑税费。 新的
Subtotal (Incl. Tax)
选项已添加为购物车价格规则条件。
- 现在,在使用 固定金额折扣作为整个购物车 操作时,使用GraphQL应用附有优惠券的价格规则可按预期工作。
目录
- 现在,该应用程序会按预期显示所有重新启用的店面产品。 以前,在禁用某个产品然后重新启用该产品时,在清除Varnish页面缓存或重新索引商店之前,应用程序不会显示该产品,因为重新启用产品后,页面缓存不会失效。
- 对大型目录的部分重新索引现在按预期进行。 以前,在使用
catalogsearch_fulltext
部分索引器重新索引期间,产品会随机从店面类别页面中消失。
- 购物者现在可以按预期重新订购带有可自定义选项的产品发票订单。 以前,当购物者尝试重新排序时,应用程序引发此错误:
{"0":"The product's required option(s) weren't entered. Make sure the options are entered and try again
。
- 您现在可以在“类别设计”页面上成功将 布局 设置设置为 无布局更新。 以前,当您分配 无布局更新 值时,应用程序恢复为 类别 — FullWidth。
- 店面的产品排序顺序问题已得到解决。 以前,当应用程序索引产品价格时,它偶尔会在
catalog_product_index_price
表中将可配置产品的min_price
和max_price
设置为0,这会影响店面的价格排序顺序。
- 应用程序现在已成功更新标记为
Product Type
的属性。 以前,由于代码中保留了product_type
属性,因此当您尝试更新Product Type
属性时,应用程序会显示此消息:An attribute with the same code (product_type) already exists.
- 保存产品时,应用程序不再更改已上传视频在产品详细信息页面的“图像和视频”部分中的位置。 以前,为新图像位置分配一个索引值(列表中的位置),如果现有图像位置与其索引值不一致,则新图像会错误地放置在列表中。
- 现在,只要 添加到购物车 按钮可供单击,添加到购物车 功能即可按预期工作。 以前,如果您在等待加载产品页面时多次单击此按钮,应用程序会引发以下错误:
Invalid Form Key. Please refresh the page
。
- 当商家向类别中添加或删除禁用产品时,应用程序不再刷新类别缓存。 以前,应用程序会刷新相关类别的缓存,而不管产品状态如何。 在保存类别时,类别也会取消分配,这会导致刷新类别缓存。
- 现在,所有商店视图 范围内的目录产品筛选可以正常工作。 以前,在网格中显示状态为
Enabled
或Disabled
的产品,而仅过滤启用或禁用的产品。
- 部分重新索引不再导致错过产品和空类别。
- 启用 使用JavaScript日历 后,重新排序现在可按预期运行(商店 > 配置 > 目录 > 日期和时间自定义选项)。 以前,启用此设置后,当您尝试从管理员重新排序以前下单的订单时,应用程序会显示此错误:
Please specify date required option(s)
。
- 现在,应用程序在创建层价格期间在多站点部署中显示正确的货币。
- 产品图像自定义属性现已正确转义。
data-src
属性的值与src
属性的值相同(按预期)。 以前,URL特殊符号会被转义。
- 通过REST API更新类别时,不再禁用“启用类别”、“包含在菜单中”和“URL密钥属性”中的 使用默认值 设置。
- 从Admin启用类别权限后,在重复访问类别页面时,不会再导致无法缓存完整页面缓存中的类别页面。 以前,对页面的后续访问无法从缓存中按预期提供,性能会降低。
- 现在,保存类别只会刷新与此类别相关的块缓存。 以前,应用程序刷新所有类别块的缓存。
- 在多商店部署中,具有百分比价格的自定义选项的价格现在会按预期转换为活动商店的基本货币。 以前,具有百分比价格的自定义选项的价格无法正确转换。 GitHub-26432
- 应用程序现在已成功重新创建图像,并且每当商家使用POST
rest/all/V1/products
发送媒体集数据时,这些图像都会按预期在管理员中可见。 以前,如果图像在pub/media
中被删除,但是介质中的记录仍然包含这些图像的记录,当商家通过POSTrest/all/V1/products
发送介质集数据时,应用程序会重新创建这些图像,但是删除了这些图像。 因此,商家在管理员中只看到占位符,因为图像是在更新过程中创建和删除的。
- 现在,当您从网站取消分配项目时,会按预期删除记录。 以前,在执行POST
rest/all/V1/products
时复制图像。
/V1/categories/{categoryId}/products
调用现在会按预期返回属于父类别的所有产品列表。 以前,如果产品属于父类别的多个子类别,则应用程序会引发此类型的错误:Internal Error. Details are available in the application log file. Report ID: webapi-5f8579e37db54
。 GitHub-30461
/V1/products/attributes/:attributeCode/options
REST终结点现在支持更新现有的属性选项。
- 在多商店部署中,具有百分比价格的自定义选项的价格现在会按预期转换为活动商店的基本货币。 以前,具有百分比价格的自定义选项的价格无法正确转换。 GitHub-26432
- 商家现在可以在产品创建过程中成功保存新属性。 以前,当商家尝试保存属性时,应用程序不会保存该属性,并将商家重定向到商店视图主页。 GitHub-30362
- Sales > Orders 和 Catalog > Products 页面上的产品网格现在列出了所有相关商店,而不仅仅是最近创建的商店。 GitHub-29267
- 产品存储库现在使用
store_id
来保存现有产品的属性值。 以前,产品存储库类会覆盖产品存储库ID,并始终为它分配默认存储库ID。 GitHub-29933
目录规则
- 现在,对于产品详细信息页面上的自定义选项,目录价格规则可按预期工作。 以前,该页面上的产品价格不反映适用的目录价格规则。 GitHub-22856
- 产品和目录缓存现在会按计划过期。 以前,缓存每天过期,因为
сron
每天运行一次catalogrule_apply_all
任务(重新索引所有目录规则和依赖索引器),并清除所有产品和类别的缓存。
Cleanup
拼写错误和语法清理
- 已修订“订单失败”页的标题以提高准确性。 以前,此页面的标题为: 我们已收到您的订单!。 GitHub-29416
- 删除了
app/code/Magento/Contact/view/frontend/templates/form.phtml
中不必要的空格。 GitHub-29779
- 更正了
bin/magento/setup:config:set
子命令帮助消息中的拼写错误。 GitHub-28802
- 已更正
framework/Registry.php
文件的PHPDoc中的语法。 GitHub-29661
- 从
app/code/Magento/Catalog/Helper/Product/View.php
中删除了无关的空格。 GitHub-30601
- 在
app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js
中更正了函数名称中的拼写错误。 GitHub-29987
- 更正了迷你购物车和结帐订单摘要中“项目”的多元化设置。 GitHub-29920
- 删除了标记分层导航过滤器中的内联元素中的空格。 GitHub-30448
- 已在
\Magento\Framework\Filter\Template\Tokenizer\Parameter
中将rl
更正为url
。 GitHub-29185
代码清理
- 已从 System > Import 页的“检查数据”消息区域中删除无关HTML
<br>
标记。
ChangeQuoteControl
已重构。 GitHub-29673
AccessChangeQuoteControl
及其单元测试已重构。 GitHub-29672
- 更正了
app/code/Magento/Captcha/CustomerData/Captcha.php
中返回类型声明的代码样式。 GitHub-29712
- 更正了按钮列表在“新建属性”页面上的位置。
- 为
\Magento\Framework\View\Element\Template
类的前端viewModel
引用示例添加了正确的块类。 GitHub-30450
- 删除了Sale Rule表单中的冗余字段集。 GitHub-29599
- 已从
hierarchy/edit.phtml
模板中删除不必要的代码。
- 已更正
app/code/Magento/CatalogImportExport/Model/Export/Product.php
中的PHPdoc注释。 GitHub-30833
- 已更正
PublisherInterface
消息的docblock注释。 GitHub-30190
- 更正了
getStatusByState
方法中的参数。 GitHub-30173
- 已更正
app/code/Magento/Quote/Model/Cart/Totals/ItemConverter.php
中的方法描述。 GitHub-30125
- 在多个文件的同一行中删除多余的变量分配。 GitHub-30133
- 在
EntityAbstract.php
中将@param string $attribute
更改为@param AbstractAttribute|string[]|string $attribute
。 GitHub-30191
- 在整个代码库中,已从文档块中删除无效标记(例如
@package
和@subpackage
)。 GitHub-30061
AdvancedPricing
类的构造中未使用的参数已被删除。 GitHub-29531
可配置的产品
- 现在,按价格筛选缺货的可配置产品会显示正确价格范围内的结果。
- 当虚拟产品的状态从“已启用”更改为“已禁用”时(反之亦然),虚拟产品不再更改类型。 以前,当产品的状态发生变化时,应用程序会将其类型从虚拟更改为简单。
- 更新购物车时,
getValue()
方法不再触发致命错误。
- 多个网站上提供的可配置产品不再显示未分配给特定网站的简单子产品。 GitHub-28291
- 店面产品页现在按预期显示分层价格,无需纳税。 GitHub-12225
- 可配置产品的MSRP价格现在正确地转换为所选货币。 以前,应用程序以错误的货币显示价格,并引发此错误:
Call to a member function setAppliedTaxes() on null
。 GitHub-26526,GitHub-29603
- 商家现在可以保存特定于商店的文本样本属性选项标签,其值为0(零)。 以前,值0会被替换为管理员标签选项值。 GitHub-30073
AdvancedPricing
类的构造中未使用的参数已被删除。 GitHub-29531
cron
- 现在,系统消息列表会在
cron
运行且应用程序按计划更新产品后准确反映产品更新。
- 基于
schedule_id
和status
的索引已添加到cron_schedule
表中。 GitHub-29601
自定义客户属性
- 应用程序现在在创建后会在“帐户信息”页面上显示
file
类型的客户属性。 以前,当您尝试保存此类型的新属性时,应用程序显示以下错误:The "newAttribute" attribute value is empty. Set the attribute and try again
和Validation is failed
。
- 应用程序现在可以正确显示多行自定义客户属性值。 以前,并非显示所有数据。
- 现在,当购物者在创建帐户时输入无效的出生日期时,应用程序会向购物者发出提醒。 以前,验证器忽略区域设置,购物者被重定向到“新建客户帐户”页面,并显示无效的日期错误。
- 现在,自定义地址属性已按预期包含在结账工作流的付款步骤中。
- 自定义地址多选属性现在可在访客结账期间以及管理员和我的帐户订单详细信息页面上正确显示。
- 自定义地址属性现在在“我的帐户”区域和“管理员订单详细信息”页面中正确显示。
- 当
Input Type
设置为Text
且Input Validation
设置为Numeric Only
时,您现在可以删除自定义客户属性中的前导零。
- 该应用程序现在可成功导出包含自定义性别属性值的客户数据。
- 该应用程序现在可按预期保存B2B用户的自定义客户属性值。 以前,为添加或编辑公司用户而创建的自定义客户属性不会与添加新用户表单绑定,因此,不会保存属性值。 此外,自定义日期属性作为字符串从数据库派生,未转换为店面显示的正确日期格式。
客户
- 店面客户帐户页面出生日期字段的日历构件现在使用指定的店面区域设置。
- 在从管理员为现有客户重新订购结帐期间,应用程序不再保存客户地址的重复条目。
- 现在,如果从管理员中删除多个客户的所有地址,则会从客户地址列表中删除所有地址,并删除默认的帐单和送货地址。 以前,应用程序从客户地址列表中删除该地址,但未删除默认帐单和送货地址。
- 管理员对地址执行批量删除后,“管理员客户地址”选项卡现在可以正确显示地址计数。 以前,应用程序在计数中包含已删除的地址。
- 客户注册页面上 出生日期 字段的日期时间格式已更正。 以前,在前面一天只有一位数字的前导零缺失。
- 现在,购物者单击 创建帐户 按钮之前,可以对 出生日期 字段进行日期格式验证。 以前,购物者可能以无效格式输入值,当他们单击 创建帐户 按钮时,购物者将被重定向到“新建客户帐户”页面,其中显示无效日期错误。
- 当管理员尝试保存包含属性无效数据的新客户帐户时,应用程序不再引发致命错误。
- 当客户尝试在之前安装了Magento Shipping并且当前部署了默认Luma主题的部署中访问其购物车时,应用程序不再引发400错误。 以前,应用程序在向服务器发送请求之前,不会过滤掉以前安装/启用的模块创建的节名称,这些模块在管理员中不受支持,从而会生成错误。
- 当启用 要求电子邮件确认 设置且已覆盖
Magento\Customer\Controller\Account\CreatePost
时,购物者创建来宾帐户时,应用程序现在会按预期显示消息。 以前,应用程序不允许对用户注册过程进行这种类型的自定义,在这些条件下,用户的电子邮件确认状态被视为完成,新用户会自动登录,并且不会显示错误消息。
- 在启用了 启用自动分配给客户组 的商店中,当购物者向非默认客户组下达订单时,应用程序现在会将购物者分配给正确的客户组。 GitHub-26976
- 当索引设置为 按计划更新 时,在多站点部署中删除非默认网站时,管理员客户网格现在可按预期使用。 以前,应用程序不显示网格并引发此错误:
[2020-12-09 11:31:54] report.CRITICAL: The website with id 2 that was requested wasn't found. Verify the website and try again. \{"exception":"[object] (Magento\\Framework\\Exception\\NoSuchEntityException(code: 0): The website with id 2 that was requested wasn't found. Verify the website and try again. at /var/www/html/magento24ee/vendor/magento/module-store/Model/WebsiteRepository.php:110)"}
dotdigital
-
从dotdigital Engagement Cloud检索程序列表时改进了错误处理。
-
来宾同步期间在store name列中同步的值现在按预期是存储视图名称。 以前,网站名称包含在此列中。
-
在保存订单后循环执行订单状态自动化之前添加了数组检查。
-
解决了dotdigital模块依赖于
magento/module-authorization
而导致编辑器升级的问题。
可下载
- 在可下载产品获得部分退款后,应用程序不再在“我的下载产品”选项卡中列出可下载的产品。 GitHub-28388
动态块(以前称为横幅)
- 当您删除了与该块关联的客户区段后,应用程序不再在店面中显示动态块。
- 现在,应用程序在确定是否显示动态块时正确考虑了目录价格规则。
EAV
- 现在,如果在通过API调用创建产品时有效载荷中未提供值,则使用
\Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend
的自定义属性将使用默认值。
电子邮件
- 未在
toOptionArray()
之前调用setPath()
时,\Magento\Config\Model\Config\Source\Email\Template::toOptionArray
不再引发错误。 GitHub-29315
- 现在,在加载电子邮件HTML时单击 返回Html版本 后,应用程序可正确地将纯文本转换为模板。
- 发送给客户的包含部分发票的电子邮件现在包含准确的物料小计。 以前,此电子邮件中的小计是订购数量的总计,而不是开票数量的总计。
- 现在,该应用程序会向具有有效电子邮件地址的所有相关客户发送电子邮件提醒。 以前,应用程序在遇到一个无效地址后停止向客户发送提醒电子邮件。
- 从目录中删除产品后,现在可以按预期以异步模式发送销售电子邮件。 以前,异步电子邮件发送被阻止,应用程序显示以下错误:
main.ERROR: Cron Job sales_send_order_invoice_emails has an error: Call to a member function getData() on null. Statistics: {"sum":0,"count":1,"realmem":0,"emalloc":0,"realmem_start":73400320,"emalloc_start":37177640} [] []main.CRITICAL: Error when running a cron job {"exception":"[object] (RuntimeException(code: 0): Error when running a cron job at /var/www/html/vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:327, Error(code: 0): Call to a member function getData() on null at /var/www/html/vendor/magento/module-catalog/Helper/Image.php:502)"} []
。 GitHub-26878
- 在禁用
sales_email/order_comment/enabled
并将sales_email/order_comment/copy_method
设置为bcc
时,应用程序不再复制订单确认电子邮件中的客户。 GitHub-29915
框架
- 现在,在搜索客户时,可正确应用自定义的过滤器组。 以前,
afterSearch
函数没有按预期进行OR筛选。 GitHub-24576
- 商店主页上的图像现在已成功呈现。 以前,页面源HTML已损坏,因为图像的base64代码中的三个连续斜杠被错误解释为评论。
- 现在,在使用阿拉伯语区域设置(
ar_SA - Saudi Arabia
)的商店中的“管理员订单”列表上过滤订单时,日期选取器可正常工作。
- 现在,商家在部署中保存购物车价格规则后,日期选取器会显示正确的日期。 GitHub-30382
- 该应用程序现在可以正确表示阿拉伯千位分组和阿拉伯小数分隔符。 以前,阿拉伯文符号会被修剪。 GitHub-26676
- 应用程序现在会按预期从数据库
session
表中删除过期的数据库会话。
常规修复
- 您现在可以配置与
php.ini
中定义的处理程序不同的本机会话处理程序。 以前,SessionManager
未将memcache设置为save_handler
,而是使用文件的session_handler
。 应用程序引发此错误:main.CRITICAL: Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 {"exception":"[object] (Exception(code: 0): Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in ../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 at ../vendor/magento/framework/App/ErrorHandler.php:61)"}
。 GitHub-24717
-
已对
LoginAsCustomer
模块进行以下改进:-
已将
around
插件替换为after
-
删除多余代码
-
已将
(bool)->getValue()
替换为isSetFlag
。 GitHub-29689
-
- 通过通配符(*)重新加载所有客户数据节不再导致
customer/section/load
的请求引发400错误。 GitHub-28154
- 应用程序现在传递在生产模式下将布局呈现到
var/report
时发生的异常。 GitHub-29606
- 更改商店视图时,应用程序不再将客户重定向到主页。 现在,只有在第二个商店视图中找不到
$urlPath
时,\Magento\VersionsCmsUrlRewrite\Model\StoreSwitcher::switch()
方法才会将购物者重定向到主页。
- 当不存在客户请求重置密码时,应用程序现在会引发异常。 GitHub-26288
- 现在,当管理员在上传具有客户属性值的文件时尝试保存包含该属性无效值的客户帐户时,应用程序会显示信息性错误消息。 以前,应用程序抛出致命错误。 GitHub-30295
- 应用程序现在可以按预期将HTML打印视图 的 徽标配置设置应用于店面发票PDF。 GitHub-24730
static::
已在用于访问私有常量的代码库中替换为self::
。 GitHub-30781
- 现在,当商家在产品创建过程中两次单击 新建属性 按钮时,应用程序会按预期打开新建属性页面。 以前,应用程序显示空页面并引发错误。 GitHub-30361
- 删除优惠券后,应用程序不再显示
The coupon code has been accepted
消息。 GitHub-30255
- 管理员现在可以将构件分配给特定类别。 GitHub-30009
- 属性选择器
input[type=datetime]
已替换为不太具体的输入类型选择器。 GitHub-30064
- 应用程序现在会按预期显示与自定义类别属性关联的特定于商店的值。 GitHub-13440
- 现在,当商店地址和送货目的地属于不同的EU国家/地区时,应用程序会显示一条提示,询问在您单击订单创建页面上的 验证增值税号码 按钮时是否应更改客户组。 GitHub-29652
\Magento\Catalog\Model\ImageUploader
类已重构为使用新的moveFileFromTmp
方法。 GitHub-29598
- 现在,当商家尝试创建具有
product_type
和type_id
代码的产品属性以便更具描述性时,应用程序会显示一条信息性更强的错误消息。 GitHub-28479
- 更正了管理员 商店 > 配置 > 服务 > OAuth 页面上 客户令牌生命周期(小时) 和 管理员令牌生命周期(小时) 字段的验证逻辑。 GitHub-29502
- 应用程序现在可以正确解析小组件内容字段中包含
}}
的文本。 GitHub-12087
- 您现在可以从产品类别页面中删除过滤器。 以前,当您尝试删除筛选器时,应用程序不允许您删除筛选器并显示以下错误:
Something went wrong
。 GitHub-8538
- 禁用可选模块
Magento_MessageQueue
后,现在可以实例化Magento\Framework\MessageQueue\ConfigInterface
。 以前,应用程序引发此错误:PHP Fatal error: Uncaught Error: Cannot instantiate interface Magento\Framework\MessageQueue\ConfigInterface in /var/www/magento2/magento2/lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php:121
。 GitHub-26080
- 改进了确定应用程序何时可以从永久存储检索电子邮件值的逻辑。 以前,当未注册的用户在第一次填写电子邮件字段后返回到签出页面时,应用程序会在签出页面上显示填充的密码字段。 GitHub-26903
- 缺少的
aclResource
属性已添加到Admin标头AdminNotification
工具栏块中。 以前,即使管理员用户没有查看管理员通知工具栏项的角色资源权限,该工具栏项也仍然可见。 GitHub-29067
framework/database/select
where
函数现在可正确处理type
。 GitHub-29590
- 在整个代码库中,循环中的
array_merge
使用效率低下已得到改进,这改进了多个位置(包括在静态内容部署过程中)的性能。 GitHub-30183
- 默认的管理会话生命周期已从加密模块移至安全模块。 GitHub-30859
- 应用程序现在检查类中的私有常量,如果存在对其的
static::
调用,则显示警告。 以前,应用程序引发此错误:Undefined class constant
。
- 向
editorconfig
添加了规则以支持将JSON和YAML文件缩进两个空格。 GitHub-30066,GitHub-30063
FlushCacheByTags
类已更新为使用后插件而不是外挂程序。 GitHub-29558
- 在不包含
0
元素的哈希数组上,MessageValidator
不再失败。 GitHub-30563
- 通过从
messages
、authentication
、progressBar
、estimation
和sidebar checkout
组件中删除sortOrder
,checkout_index_index.xml
文件中的代码已得到增强。 GitHub-30550
calc
中的内容现已转义,这将导致CSS输出文件中有正确的calc
值。 以前,应用程序返回的calc
值不正确。 GitHub-30542
- 在保存全局范围的类别URL重写时,URL重写生成器现在将类别对象
url_key
、url_path
和store_id
设置为默认存储值。 以前,它使用上次处理的存储ID的值保存url_key
、url_path
和store_id
。 GitHub-29585
\Magento\Widget\Controller\Adminhtml\Widget\Instance\Validate
现在将短语结果值识别为错误消息,并在小组件验证期间将其输出给用户。 GitHub-27397
Magento\Catalog\Model\Category\DataProvider::getFieldsMap()
中类别属性的硬编码列表已替换为从缓存生成的属性列表。 GitHub-13440
- 已删除
req.http.host/client.ip
的冗余散列,散列由Varnish内置VCL处理。 GitHub-29988
- 向
Magento_Ui
文件上传程序添加了失败回调。 GitHub-29557
- 已更正启用
Magento_LoginAsCustomerAssistance
但禁用Magento_LoginAsCustomerAdminUi
或Magento_LoginAsCustomerLog
时发生的acl.xml
不一致。 以前,当具有这些凭据的管理员尝试登录到管理员时,应用程序显示空白页面,并在出现以下情况时引发此错误:Exception #0 (LogicException): Could not create an acl object: Invalid Document Element 'resource': The attribute 'title' is required but missing. Line: 13
。 GitHub-30680
- 在创建插件期间生成
Interceptor
时,应用程序不再引发Undefined class constant
错误。 GitHub-28981,GitHub-29879
- 应用程序现在可以正确处理异步批量操作的消息传递和日志记录。 以前,尽管更新了产品,但
magento_operation
和queue_message_status
表未正确更新,并且系统消息不正确。 GitHub-29718
- 当商店启用 需要电子邮件确认 时,购物者现在按预期在“重置密码”电子邮件中单击 设置新密码 时,被重定向到“设置新密码”页面。 以前,购物者被重定向回登录页面上的 忘记密码 按钮。 GitHub-27954
- 使用默认值保存行系统配置时,更正了数组到字符串的转换错误。 GitHub-30314
- 您现在可以为消息队列设置参数。 GitHub-30216
- 基础文件收集器现在遵循
AppState->emulateAreaCode()
。 GitHub-39656
- 新
BlockByIdentifier
类支持基于CMS块标识符检索布局块。 因此,当从缓存中移除CMS块时,应用程序还会清除布局块缓存。 GitHub-28309
- 更正了队列中数值参数转换的问题。 以前,当您在
queue_topology.xml
中声明带有数字type
参数的队列时,参数值会转换为字符串。 GitHub-29615
礼品卡
- 现在,只有在成功保存订单后才能发送包含礼品卡代码的电子邮件,前提是启用了 在订购订单项时创建礼品卡帐户 配置设置。 以前,如果订购商品时生成礼品卡帐户,但发送虚拟礼品卡后出现异常,则重复使用礼品卡代码并将其发送给不同客户。
- 该应用程序不再复制礼品卡订单。 以前,当购物者订购一张礼品卡时,该应用程序会发送两个礼品代码。 发生此问题的原因是
cron
作业调用了\Magento\GiftCard\Observer\GenerateGiftCardAccountsInvoice::execute()
,此方法未检查在创建发票期间是否已生成礼品卡代码。
- 商家现在可以根据预期取消分配类别中的产品。 以前,应用程序抛出与此错误类似的错误:
Could not save product "4" with position 0 to category 3
。
- 添加了对错误页面和维护模式中符号链接
root
的支持。 以前,如果root
或magento/pub
已符号链接到其他目录,则错误处理器(Magento\Framework\Error\Processor
)未生成正确的视图文件URL。 GitHub-30296
- 向
EmailSender
类添加了缺失的order_data
数组。 这使得这些类符合Magento的建议,即使用标量变量而不是电子邮件模板中的对象。 GitHub-29604
Google Tag Manager
- Google标签管理器
productClick
函数现在可按预期运行。 以前,未在列表页面上的产品中触发productClick
,并且Google标签管理器无法捕获该事件。
- 现在,在购物车中编辑可配置产品选项后,Google Tag Manager可配置产品选项会在数据层中按预期更新。 以前,当产品选项更改时,
removeFromCart
事件的数据被错误地重写,并且数量保持不变。
GraphQL
urlResolver
查询现在可以正确处理查询参数。
- 将自定义CMS节点和页面指定为输入时,
urlResolver
查询不再返回NULL。 GitHub-30474
category
查询不再返回已禁用的父类别的子类别。 GitHub-30468
- 禁用URL重写时,
category
查询现在返回类别图像的正确路径。
- 现在,发生错误时,
resetPassword
突变会返回信息更丰富的消息。 GitHub-30179
- 当产品位置更改时,
products
查询的缓存结果按预期失效。 GitHub-30467
- 当使用
in
关键字指定category_id
筛选器时,products
查询现在返回预期结果。 GitHub-30349
categories
和categoryList
查询现在根据类别权限配置和父类别ID考虑类别可用性。 GitHub-29880,GitHub-30624
updateProductsInWishList
突变现在可以正确验证愿望清单项目。 GitHub-30467
-
已弃用
ProductInterface
和CategoryInterface
中的多个属性,以防止在店面中使用它们。 GitHub-30625 -
现在,当类别权限设置为隐藏价格时,产品查询结果中会隐藏价格。 GitHub-29926
- 您现在可以使用
addProductsToWishList
突变将具有用户定义的数量的捆绑产品添加到愿望清单。
- 将产品添加到购物车的变体现在遵循目录权限。 GitHub-30179
- “添加到购物车”操作的GraphQL响应时间已缩短。
products
查询现在按预期返回层价格值。 GitHub-29168
- 已从
lib/internal/Magento/Framework/GraphQl/Query/EnumLookup.php
中的循环中删除冗余getMappedNums
。 GitHub-30031
- 当查询的产品具有已禁用的相关产品时,
products
查询不再返回错误。 GitHub-28892
cart
查询现在返回已转换为正确货币(默认显示货币)的价格。 以前,查询返回以基础货币表示的项目价格值,并且返回货币代码作为默认显示货币。
- GraphQL现在提供目录权限。 应用程序根据购物者的客户组限制为
products
查询返回哪些项目。
- 已将
customizable_option
属性添加到实现CartItemInterface
的多个数据类型。
- 为
storeConfig
查询添加了返回商店、商店组和网站信息的属性。
- 已恢复
SelectedCustomizableOption.type
属性。 此外,CartItemInterface
的各种实现中的customizable_options
属性现在为非null。
products
查询的搜索功能不再返回启用了类别权限的项目。
products
查询为具有多个货币的存储库视图返回正确的货币。
products
查询筛选器的标签现在会返回转换的值(如果适用于非默认存储视图)。
- 购物车中礼品卡上的固定商店货币金额。
- 添加了
ConfigurableProductOptionsSelection
数据类型,其中包含与产品的可选可配置选项对应的元数据。 在products
查询中使用此对象可最大限度地减少购物者选择可配置产品选项时显示的媒体集项目数量。
分组的产品
- 产品查询现在返回分组产品的所有预期数据。 以前,
product_links
是空数组。
- 现在,当所有子简单产品缺货时,分组的产品会在产品编辑页面上列为缺货。
- 现在,当分组产品的子简单产品的状态更改为缺货时,其状态会在产品编辑页面上正确更新。 以前,分组产品的父级库存物料在其子级更改库存状态后不会更新。
图像
- 商店主页上的图像现在已成功呈现。 以前,页面源HTML已损坏,因为图像的base64代码中的三个连续斜杠被错误解释为评论。
- 已从CMS模块中删除对
fileinfo
扩展的依赖关系。 以前,当您尝试使用图像上载程序上载图像时,应用程序引发错误,该程序在添加内容时单击 插入图像 按钮时启动。 GitHub-24332,GitHub-16531,GitHub-29852
- 添加了对读取
exif_image.png
或exif-image.jpeg
元数据的支持。 GitHub-1449
- 图像现在由目录事件轮播小组件在上传后按预期显示。 以前,
catalog_event_status_checker
cron作业删除了已上传的图像。
- CMYK图像颜色现在可以正确呈现。 当Imagick适配器现在检测到打开的映像具有CMYK颜色空间时,该颜色空间将转换为SRGB。 以前,这些图像使用反转颜色渲染。 GitHub-22375
- 不再为
image_with_border.phtml
设置布尔值。 已从.product-image-photo
中删除冗余max-width
和height
设置。 (这些值已通过重置样式在图像上全局设置。)GitHub-30186
导入/导出
- 使用CSV文件(
entity type = "customer address"
和import behavior = "add/update"
)导入客户地址时,不再为客户地址region_id
分配NULL
值,某些字段值已从该文件删除。
- 现在,您可以在导入期间隐藏店面上的产品图像。
- 如果CSV文件还包含不正确的条目,则计划产品导入过程现在会使用正确的数据字段更新产品。 以前,如果CSV文件包含不正确的条目,则在启用 On Error: Continue Processing 时未更新任何条目。
- 当导入的产品在CSV文件中将
qty
设置为0但is_in_stock set
设置为1时,该产品不会列在类别页面上,并且产品详细信息页面会将其识别为缺货。 以前,导入后店面中会显示具有这些值的产品。
- CSV导入不再忽略其他属性的
dropdown
和textarea
值。 以前,这些属性值在导入期间不会更新。
- 产品导出CSV文件现在按预期显示在导出CSV文件的管理员列表中。 以前,应用程序在您运行此命令时引发错误:
bin/magento queue:consumers:start exportProcessor --single-thread --max-messages=10000
。
- 在导入包含孟加拉语(孟加拉语)字母字符的CSV数据时,应用程序不再引发错误。
- 现在,当管理员在导入文件期间单击 Check Data 时,应用程序会显示一条信息性错误消息;导入文件后,在Chrome中工作时,该文件已发生更改。 以前,应用程序显示控制台错误,但未告知用户如何继续。
- 当您多次导入相同的产品CSV数据时,应用程序不再重复产品图像。 GitHub-21885
vendor/magento/framework/File/Uploader.php
中图像文件名的90个字符限制已被删除。 以前,目录和文件名的长度不能超过255个字符。 应用程序导入了文件名超过此限制的带有图像的产品,但未导入图像文件。 GitHub-29377
- 现在可以将优惠券代码成功导出为CSV或XML。 以前,当您尝试导出优惠券时单击 导出CSV 或 导出XML 时,应用程序显示404错误。 GitHub-29277
- 现在,在导入包含图像的CSV文件后,会删除重复的产品图像。 GitHub-14398,GitHub-21885
索引
- 我们改进了部分索引器的性能。 应用程序现在会清除每个1000-ID批次迭代中更改的缓存ID。 缓存上下文不再累积ID。 以前,缓存上下文累计了每个1000-ID批次迭代的缓存ID,并在每个迭代上清除相同的ID集。
- 部分重新索引系统和完全重新索引系统之间的不一致已得到纠正。 现在,两个索引系统都使用相同的代码,这可以正常工作。 以前,两个索引系统对共享索引器使用不同的逻辑,这可能导致索引器在每次运行部分重新索引系统之后失效。 GitHub-29478,GitHub-29297
-
我们已经解决了手动索引器的问题,该问题导致类别页面为空或类别页面上的产品计数减少。 出现以下情况时,出现类别页面不完整或产品计数问题:
-
catalogsearch_fulltext
和catalog_product_price
部分索引器已在大型目录上执行,直到这些索引器完成执行。 -
在
catalog_category_product
或catalog_product_category
索引上执行部分索引器,同时对其中一个索引执行完全重新索引。 这两个索引过程可能会发生冲突,从而导致类别页面中缺少产品。 -
bin/magento indexer:reindex inventory
是在大型目录上执行的。 在catalogsearch_fulltext
部分索引器完成执行之前,类别页面中缺少产品。
-
- 向
Magento_Bulk
MySQL表添加了索引器,这改进了批量操作的性能。
- 现在,数据库表中的注释在重新索引(
bin/magento indexer:reindex
)后可准确反映表状态。 以前,重新索引后的表注释包含与全新安装后注释包含的值相同的值。
- 在实施MariaDB v.10.3.18的部署中,
SELECT entity_id IN
语句已得到改进,这改进了目录类别索引的性能。 GitHub-25199
- Adobe Commerce通过消除每个索引器实例多次刷新标记而提高了缓存性能。 GitHub-29890
基础架构
- 您现在可以使用
app/etc/env.php
将消息代理从MYSQL更改为AMQP。
- 产品数量的小数值的余数计算问题已在相关JavaScript库中进行了更正。 应用程序以前错误地计算了超过两位的小数分数,随后显示不正确的消息。
\Magento\Authorization\Model\Rules::update
方法已被弃用。 GitHub-29128
- 从UTC转换日期对象时,应用程序不再引发致命错误。 以前,在某些情况下,
convertConfigTimeToUtc
方法会引发异常。 GitHub-29525
DataObject
已在\Magento\MediaGalleryCatalogUi\Ui\Component\Listing\Columns\Thumbnail::prepareDataSource
中被替换为产品模型。GitHub-1711
RequireJS
解析程序不再无法检测到被阻止的资源。 以前,解析程序无法正确检测页面上的所有资源是否已正确加载或处理,并且页面继续加载。 GitHub-28116
- 属性存储库代码验证现在遵循
Magento\Eav\Model\Entity\Attribute::ATTRIBUTE_CODE_MAX_LENGTH
,而不是硬编码值。 GitHub-29017
- HTML缩小不再从PHTML文件中的HTML字符串中删除三斜杠(https://experienceleague.adobe.com///?lang=zh-Hans)。 以前,在缩小过程中将三斜杠解释为注释,行其余部分在部署时已在生成的PHTML文件中完全删除。
- 商家现在可以在表列级别而不是表级别配置索引器订阅。 已向
\Magento\Framework\Mview\View\Subscription
添加了一个新参数,以允许忽略特定视图或表组合的列。 GitHub-30243
- 在产品页面JavaScript完全初始化之前单击 添加到购物车 按钮不再导致重复的
form_key
值。 以前,可以将具有触发异常的缓存form_key
值的产品添加到购物车。 在JavaScript完全初始化之前单击 添加到购物车 时,表单数据中发送的form_key
值与用户会话不匹配,产品未添加到购物车。 GitHub-13746
- 当前cURL客户端现在遵循不区分大小写的标头名称。 以前,
Set-Cookie
比较区分大小写,这可能会导致某些HTTP服务器出现问题。 GitHub-29524
- 更新了
api-functional
和测试用例XML文件中的XSD URN格式。 GitHub-30552
- 已将事件前缀和事件对象添加到目录产品选项值集合中,以改进
\Magento\Catalog\Model\ResourceModel\Product\Option\Value\Collection
的集合加载的自定义。 GitHub-29621
- 已重构所有出现的
array_merge
以使用编码标准中建议的格式。 GitHub-30005
- 类型
\Magento\Framework\View\Element\Text\ListText
的head.additional
块已添加到adminhtml
default
布局(由magento2/module-base
添加)。 GitHub-29165
- 向布局模板模块构件添加了缺失的esc URL方法。 GitHub-30036
\Magento\Framework\Filesystem\Io\File::read()
方法现在与\Magento\Framework\Filesystem\Io\IoInterface::read()
兼容。 GitHub-27866
克拉尔纳
- 删除了对PayPal模块的依赖关系。 GitHub-29421
记录
Magento_Logging
模块现在正确注册了新值以及之前的值。 以前,“更改前值”列中的值显示N/A的值,无论这是第一次更改还是下一次更改,也不管何时返回默认值。 GitHub-26943
媒体集
- 管理员 商店 > 配置 > 高级 > 系统 页面已更新,以显示正确的产品名称(媒体集)。 包括对用户界面的细微重新设计。 GitHub-1738
- 媒体集图像描述的“用于”部分中的链接现在显示已由所选图像按预期过滤的网格。 以前,显示的网格标题不正确,列表条目也不准确。 GitHub-1694
- 您现在可以在媒体集中成功编辑多个图像。 以前,在将标记添加到一个图像后,无法向另一个图像添加标记。 GitHub-1755
- 从媒体集中的图像中删除标记后,“标记”下拉菜单现在按预期为空。 GitHub-1703
- 现在支持对Media Gallery同步队列消息进行批处理。 GitHub-1724
- 在禁用 增强型媒体集 的情况下,当您尝试打开媒体集时,应用程序现在会按预期显示404页。 GitHub-1760
- 如果发生异常,
MediaGalleryMetadata
现在会跳过区段读取器,而是按预期解析并显示图像元数据。 以前,由于exif_read_data
区段读取器出现异常,导致图像元数据为空。 GitHub-1782
- 文件夹名称长度不再阻止将图像上传到媒体集。 媒体集现在将路径列设置为类型
text
。 GitHub-1778
- 现在,当从媒体集中插入演绎版时,图像上传程序会显示正确的图像大小。 GitHub-1806
- 路径验证已添加到
Mediagallery
上载程序插件。 以前,验证失败,并且在 启用旧媒体集 被禁用时,应用程序未导入产品。 GitHub-30649
-
已为新媒体集添加并强制执行
Magento_Cms::media_gallery
个ACL子资源,以支持为以下离散操作配置的权限:- 上传资源
- 将资产插入内容
- 删除资源
- 创建文件夹
- 删除文件夹。 GitHub-1487
- 不再裁剪长媒体集文本字符串和文件夹名称。 以前,应用程序显示裁剪的文本和图像,并显示以下消息:
We couldn't find any records
。 GitHub-1763,GitHub-1758
- 编辑新页面的内容时未选择任何图像时,应用程序不再显示 添加选定项 按钮。 GitHub-1769
- 筛选器现在已按预期应用于 内容 > 媒体集 类别网格。 GitHub-1763
- 图库多个断点选项配置现在可按预期工作。 以前,断点选项配置无法正常工作,因为
mediaCheck
在页面加载时触发了退出媒体查询函数。 GitHub-29933
MFTF
- 用
CheckStaticBlocksTest
中的操作组替换重复操作。 GitHub-30561
AdminUpdateCategoryAndMakeInactiveTest
和VerifyChildCategoriesShouldNotIncludeInMenuTest
已重构以符合MFTF最佳实践。 GitHub-30058
- 已删除重复的
AdminOpenCMSBlocksGridActionGroup
。 GitHub-30896
- 已将
AdminOpentCmsBlockActionGroup
替换为AdminOpenCmsBlockActionGroup。 GitHub-29839
- 已弃用
GoToAttributeGridPageActionGroup
。 GitHub-30103
- 已将操作组添加到
Analytics
模块。 GitHub-29500
- 已更新
CheckCheckoutSuccessPageAsRegisterCustomerTest
和CheckCheckoutSuccessPageAsGuestTest
以在测试运行后取消创建的订单。 GitHub-28324
- 由于冗余,已删除
AdminNavigateToPageGridActionGroup
。 GitHub-29838
- 已解决导致
StorefrontProductListWidgetWithSharedCatalogTest
跳过测试的问题。 GitHub-322
- 已实施
ActionGroup
以导航到签出页面。 GitHub-29843
- 已实施
AdminOpenCreateNewCMSPageActionGroup
以导航创建新的CMS页面。 GitHub-29824
- 更正了媒体集CMS页面的MFTF测试中跳过的问题。 GitHub-30164
- 已在
Company
、CompanyCredit
、CompanyPayment
、CompanyShipping
和ConfigurableSharedCatalog
模块的MFTF测试中添加有意义的标题和描述。 GitHub-30164
新测试
- 添加了一项测试,用于在“管理员”中向朋友发送电子邮件。 GitHub-29145
- 添加了由管理员执行的从网格中删除CMS块的测试。 GitHub-30372
- 添加了将购物车规则应用于单个捆绑包的测试。 GitHub-28921
- 添加了测试,以检查在删除实体后是否显示媒体集图像的 用于 的信息。 GitHub-1774
新建操作组
-
AssertStorefrontCustomerLogoutSuccessPageActionGroup
。 GitHub-29841 -
AdminOpenConfigurationStoresPageActionGroup
。 GitHub-29848 -
ReloadPageActionGroup
。 GitHub-30683 -
StorefrontClickRefundTabCustomerOrderViewActionGroup
。 GitHub-30032 -
AdminOpenAdminThreeDSecurePageActionGroup
。 GitHub-29845 -
AdminCustomerClickFirstRowEditLinkActionGroup
。 GitHub-29501 -
StorefrontClickAddToCartButtonActionGroup
。 GitHub-29823 -
AdminDeleteTaxRateActionGroup
。 GitHub-29940 -
AdminOpenWebConfigurationPageActionGroup
。 GitHub-29846 -
AdminOpenGeneralConfigurationPageActionGroup
。 GitHub-29847 -
AdminOrderClickSubmitOrderActionGroup
。 GitHub-29649 -
AdminOpenCatalogProductPageActionGroup
。 GitHub-29941 -
AdminClickInvoiceButtonIntoOrderActionGroup
。 GitHub-25399 -
AdminGridBulkActionGroup
。 GitHub-28324 -
AdminGridColumnShowActionGroup
。 GitHub-28324 -
AdminOpenIndexManagementPageActionGroup
。 GitHub-29825 -
AdminOpenCatalogSearchTermIndexPageActionGroup
。 GitHub-29844 -
AdminClickAddProductToggleAndSelectProductTypeActionGroup
。 GitHub-30917 -
StorefrontCheckoutClickSaveAddressButtonActionGroup
。 GitHub-30916 -
AdminOpenCurrencyRatesPageActionGroup
。 GitHub-30783 -
AdminClickGetShippingMethodsAndRatesActionGroup
。 GitHub-30782 -
AdminSelectFixedShippingMethodActionGroup
。 GitHub-30782 -
StorefrontClickProceedToCheckoutActionGroup
。 GitHub-30926 -
StorefrontOpenMyAccountPageActionGroup
。 GitHub-29842
新闻稿
- 当客户订阅了排队的新闻稿时,管理员用户现在可以按预期编辑客户帐户。 GitHub-30645
- 现在,如果购物者没有确认他们的新闻稿订阅,应用程序会重新发送新闻稿订阅确认。 GitHub-28422
- 现在,当客户订阅排队的新闻稿时,您可以按预期编辑客户帐户。 GitHub-30645
支付方式
- 现在,所有网站的支付方法均可按多商店部署中的预期加载到管理员中。
- 在购物者输入部署中的任何信息(其中采购订单已配置为唯一可用的付款选项)之前,应用程序不再显示优惠券代码字段上方的
Purchase Order number is a required field
消息。
- 当购物者的姓名包含重音字母时,应用程序现在可以成功完成Payflow Pro付款。 以前,付款未完成,应用程序记录此错误:
report.CRITICAL: String to be escaped was not valid UTF-8 or could not be converted
。
- 启用 自动分配给客户组 后,来宾购物者现在可以下单PayPal。 付款在PayPal网关上处理,订单在Magento中创建,购物者看到订单感谢页面。 以前,订单已在PayPal网关上成功处理,但订单未在Adobe Commerce中创建。 购物者被重定向到订单审核页面,应用程序在该页面中显示以下错误:
Failed address validation: %1" error
。 GitHub-25399
PayPal
- 现在,从使用信用卡的支付方式切换到非信用卡支付方式后,商家可以从管理员成功下达订单。 以前,当商家单击 提交订单 按钮时,加载过程开始但从未完成,并且未下达订单。
- 使用PayPal Express下订单时,应用程序不再创建重复订单。 以前,当购物者尝试使用PayPal Express支付订单,但PayPal返回错误时,应用程序仍会创建订单。 这会导致商户网站上的重复订单。 GitHub-13952
- PayPal结算报告现在可在 报告 > 销售 > PayPal结算 中获取。 以前,应用程序未在PayPal结算报表网格上列出这些报表,而是显示此消息:
We couldn't find any records
。
- 在签出期间单击 PayPal 按钮不再触发冗余
web-api
调用。 以前,会触发两个请求,从而使产品费用加倍。
性能
module-catalog-import-export/Model/Import/Product/Option.php
中的性能问题已得到解决。 导出或导入100,000多条记录所需的时间已缩短。 查看大量产品选项🔗知识库文章的导入/导出时间比预期长。
Magento_Csp/Model/BlockCache
已重构,以减少内存消耗和生成不需要的大型缓存字符串。 以前,包含动态列入白名单的脚本和样式的页面经常会遇到性能问题。 GitHub-29964
- 我们改进了包括10万多件使用消费者产品的目录预定出口的绩效。
- 在将禁用的产品添加到类别或保存到类别时,应用程序不再刷新类别缓存。 以前,应用程序会刷新相关类别的高速缓存,而不管产品状态如何,这会影响服务器性能。
- 更新购物车中产品数量的页面加载时间已缩短。 以前,应用程序对购物车中的每个产品执行多个单独的查询,这会增加页面加载时间。
- 向
Magento_Bulk
MySQL表添加了索引器,这改进了批量操作的性能。
- 应用程序现在可缓存可配置产品的子ID。 这通过减少数据库请求数提高了页面加载性能。 GitHub-30585
- 管理员功能板的加载已得到改进。 以前,应用程序在页面完成加载之前将选项卡名称显示为列表。
- 通过为布局缓存添加到期限制,改进了Redis缓存管理。 以前,在大型部署中,Redis缓存会快速达到分配的最大内存,并且应用程序在写入操作时抛出错误。
- 通过删除
app/code/Magento/Catalog/Model/CategoryLink.php
中的冗余数据库查询,提高了签出性能。 GitHub-29453
Magento\Framework\DB\Adapter\Pdo\Mysql->isTableExists
已重构以提高性能。 减少对SHOW TABLE STATUS
的冗余调用,以检查表是否存在。 GitHub-29662
getPageLayoutsConfig
现在保存在缓存中,这改进了配置生成器的性能。 GitHub-29546
- 在针对包含3,000,000多个客户的客户区段执行编辑和保存操作期间,Adobe Commerce的性能已得到改进。
永久
- 启用永久购物车后,购物者在其会话Cookie过期后无法再下订单。 相反,应用程序会显示登录页面,以便购物者可以登录。 以前,应用程序会下订单。 当
PHPSESSID
过期时,应用程序未正确验证永久客户,并且从永久信息重新创建了customerSession
。
- 在购物者登录到启用了永久购物车的商店后,应用程序现在会按预期显示欢迎消息。 以前,应用程序显示 不是您?登录后 条消息。
- 应用程序不再显示 不是您吗?在登录到启用了永久购物车的部署时,客户选择 记住我 选项时显示 文本。
- 在客户会话过期后,应用程序不再显示客户购物车的内容。 以前,当访客客户尝试在启用永久购物车时签出时,应用程序会显示此错误:
No such entity with cartid = 0
。
定价
- 连续的异步价格更新不再相互干扰,并且会为每个操作分配正确的状态。 以前,如果异步价格更新失败,则在重新启动相应的队列使用者之前,后续的所有异步价格更新都将失败。 GitHub-27865
报告
- 报告 > 营销 > 购物车中的产品 现在只显示正在生成报告的用户允许范围内的记录。 以前,所有数据都可用于所有范围。
- 现在,当在购物车中的产品报表中显示产品货币时,应用程序将使用在生成报表的贸易商角色范围中指定的货币。
- “最近查看的项目”和“最近比较的项目”产品功能现在会在多商店部署中按预期在管理员中显示不同商店和网站的统计信息。 以前,这些功能不会考虑所有商店或网站。
- 订单报表中的价格现在使用正确的货币符号。
- 应用程序现在在用户单击管理员仪表板 转到高级报告 按钮时验证令牌是否存在。 如果令牌存在,则应用程序会显示“高级报告”页面。 如果未配置令牌,应用程序将在用户指南中显示信息页面。 GitHub-25411
退货授权(RMA)
- 在您拆分RMA时,选定的选项现在适用于拆分行项目。 以前,不会保存退货原因、物料条件和解决方法的值。
- 启用JavaScript捆绑后,您现在可以删除RMA的跟踪和运送信息。
- 仅对特定网站范围内的产品具有受限访问权限的管理员现在可以向退货添加项目,即使该项目不再在其网站范围内也是如此。
审核
- 在 商店 > 属性 > 评级 上显示的评级数量现在与多站点部署中的评级计数匹配。 GitHub-30258
- 现在,当您单击管理员 营销 > 所有审核 上的 新建审核 按钮时,新审核页面会按预期加载。 单击此页面上的某个产品将打开该产品预期的新审阅表单。
- 当您尝试从管理员 营销 > 所有审核 编辑订单时,应用程序不再引发此错误:
Uncaught TypeError: Event.observe is not a function
。 GitHub-30388
奖励
- 现在,当部分订单完成时,会按预期计算应纳税订单的奖励积分。
- 商家现在可以成功地对用奖励点数购买的订单发出部分退款,并且随后仍退还订单剩余部分。 以前,商家无法退还剩余订单的奖励积分。
- 当购物者在删除奖励点后重新应用奖励点时,应用程序不再显示此错误:
You removed the reward points from this order
。
- 现在,当客户在支持多种货币的商店中使用非基础货币下达订单时,可正确计算奖励积分。
销售
sales_shipment_grid
的order_created_at
列现在在每次更新后按预期更新。
- 您现在可以从启用了 使用JavaScript日历 的商店中成功对具有自定义选项日期的产品重新排序。 以前,当您尝试重新排序时,应用程序不会将项目添加到购物车并显示以下错误:
Could not add the product with SKU "simp1" to the shopping cart: Please specify date required option(s).
- 在启用了零小计结帐方法的部署中,当购物者结帐的订单包含总成本为$0的虚拟产品时,应用程序不再立即关闭订单。
- 应用程序在处理订单之前不再对其进行存档。 以前,管理员订单网格上的多选操作会影响未选定的订单。
- 现在,将沙特里亚尔(SAR)设置为基础货币时,贷项通知单网格会显示正确的货币符号。
- 现在,应用程序在结帐期间始终如期在订单页面上显示送货地址信息。
total_qty
的值现在与销售发票中的total_qty_ordered
的值匹配。
- 现在,异步发送销售电子邮件只会发送在上次更新日期之后创建的那些订单的电子邮件。 以前,启用异步发送时,应用程序不会按日期过滤电子邮件。
- 现在,在管理员下订单后,应用程序会按预期发送发票电子邮件。
- 现在,当商家从管理员为客户创建新订单时,应用程序会在会话期间清除现有订单数据。
- 启用 启用自动分配给客户组 后,您现在可以为通过管理员订单创建的新客户更改客户组。 您也可以根据增值税验证分配客户组。 以前,在验证VAT号码时,请求对象不检查分配的请求
group_id
。 默认情况下,它使用默认的group_id
。
- 在商家使用REST API创建部分装运后,应用程序不再将状态为
Suspected Fraud
的自定义订单状态的状态更改为Processing
。
销售规则
- 购物者更改配送方式时,已根据配送方式应用的优惠券代码将不再应用。 以前,当购物者切换配送方式时,该应用不会清除优惠券代码。
- 购物者应用优惠券代码的频率不能超过 每位客户使用次数 设置允许的频率。 以前,如果购物者打开了多个浏览器窗口,同时下了多个订单,则每个订单都会收到折扣,即使 每位客户的使用次数 设置的值为 1。
Search search-heading
- 购物者搜索搜索同义词时,Elasticsearch不再引发未知修饰符错误。 以前,转义器在正则表达式中缺少转义斜杠符号,从而导致致命错误。
- 当子产品的可见性设置为 不可见 时,高级搜索不再将可配置产品的子产品作为单个搜索结果返回。
- 搜索结果中的产品名称的Elasticsearch排序不再区分大小写。
- 当在管理员 商店 > 配置 > 目录 > 目录 > 目录搜索 中启用 设置要缓存的排名最前的搜索结果数量为0 设置时,搜索结果页面现在会按预期缓存。
- 由于Elasticsearch字段限制,目录搜索索引器现在可在不引发错误的情况下执行。 以前,应用程序引发此错误:
Limit of total fields [xxx] in index [m24dev_product_1_v10] has been exceeded
。
- 目录搜索的性能已得到改进。 禁用 启用搜索建议 (存储 > 配置 > 目录 > 目录搜索 )按预期工作。 以前,应用程序查询MySQL
search_query
表而不是Elasticsearch自动完成搜索建议。 GitHub-25534
- Elasticsearch现在过滤产品价格的方式与MySQL相同。 在Elasticsearch索引中,字段类型
price_*
已从float
更改为double
,以提高精度并更正浮点错误。
- 已向Admin添加一个键值事件侦听器,以便在输入正斜杠时激活全局搜索表单。 GitHub-29551
- 当使用
string
值按具有integer
或decimal
后端类型的属性筛选产品时,Elasticsearch不再引发错误,而是不再按预期显示产品。 以前,应用程序在exception.log
中显示此错误:number format exception
。
-
当搜索词包含
/
时,Elasticsearch不再引发异常。 GitHub-25886,GitHub-25110 -
当常规类别权限中的 不允许目录搜索依据 配置设置启用时,现在将按预期禁用产品查询中选定客户组的搜索。 GitHub-29927
- 搜索结果中不再包含同一单词的多个引号。 GitHub-30104
配送
- 当网络中断中断与DHL传送方法的连接时,签出过程不再失败。 相反,应用程序会显示其他可用的配送方式。 以前,当与DHL传送的连接中断时,签出过程停止,并且应用程序显示以下错误:
Sorry, no quotes are available for this order at this time
。 GitHub-29902
- 在管理员 商店 > 配置 > 销售 > 交付方法 上描述UPS交付方法的字段现在按预期启用。
- 通过POST
/rest/V1/shipment
终结点创建的装运现在可正确更新订单。 以前,应用产品创建发运,但发运状态仍为处理状态。
- 如果在使用“Ship to Multiple Addresses”(收货多个地址)结帐之前从购物车中删除了其他产品,则应用程序将不再从购物车中删除简单产品。 GitHub-30259
- 现在,“订单复查”页会按预期显示要发运至多个地址的订单的发运前税额。
- UPS装运跟踪现在仅在已交付包时指示
Delivered On
状态。 GitHub-30032
- 现在,当购物者从多个地址结帐返回购物车时,应用程序会显示包含虚拟产品的订单的正确购物车小计。
- 在启用JavaScript捆绑时,商家现在可以从发运页面为使用FedEx发运的现有订单创建发运标签。 以前,当商家单击 创建配送标签 按钮时,应用程序会引发错误。
- 发送给客户的装运确认电子邮件中的装运跟踪链接现在可按预期工作。 以前,此链接返回404错误。
- 现在,当购物者使用多个地址结帐,然后删除虚拟产品以外的所有产品时,应用程序会显示信息性错误消息。 GitHub-25595
- 现在,您可以按预期为部分订单创建送货标签。 以前,当您尝试为订单中的一个项目创建送货标签时,应用程序会将所有产品添加到包,但验证失败。 GitHub-29552
- 调用
/V1/guest-carts/:cartId/totals-information
时不再绕过配送方法的验证。 GitHub-25147
Sitemap
cron
生成的站点地图现在包含正确的图像URL。 以前,在多存储部署中生成的缓存图像路径不正确。
暂存
- 现在,当您检查主页计划更新时,“编辑主页”页会按预期显示所有计划的更新。 以前,应用程序仅显示若干计划更新中的一个。
- 现在,使用
/rest/V1/products/special-price-information
特殊价格端点发送0将保存价格并返回预期的计划。
- 当导入CSV文件包含字节顺序标记(BOM)时,计划导入现在会按预期运行。
- 当商家计划类别更新时,应用程序不再删除布局正文类。
- 运行
cron
后,重新计划的产品更改现在不再被清除。
- 当您尝试为类别计划更新时,应用程序不再引发错误。 以前,当您在“计划新更新”页面上单击 保存 时,应用程序会引发此错误:
Something went wrong while saving the Magento\Catalog\Api\Data\CategoryInterface
。
rest/V1/products/special-price
API现在可用于为多个商店安排产品特价。 以前,当商家为新计划的from
和to
时间安排多个商店的价格更新时(当在新计划的开始时间有回滚可用时),应用程序会引发错误。
存储
- 管理员和主商店切换器现在反映对管理员中的商店排序顺序所做的更改。 GitHub-13401
- 现在,在商店视图的顶级URL键发生更改后,应用程序将为类别和产品创建正确的URL。 以前,当商店视图的类别树包含修改的
url_keys
时,如果类别键未更改但类别父项的键有更改,则原始代码将在创建URL时使用类别的默认商店视图。 GitHub-28633
Target规则
- 产品详细信息页面的加载已优化。 我们为数据库表添加了索引,这些索引可以优化许多情况下的目标规则条件查询。
- 现在,当“要显示的产品”功能所使用的
is one of
条件包含多个条件时,相关产品的目标规则即可正常工作。 以前,当此条件包含多个值时,不会解析它。
税金
- 来宾订单上的VAT验证不再导致应用产品保存具有不正确客户税分类的报价。 GitHub-30018
- 现在,在配置FPT时,可以在结账期间保存要发往多个地址的订单。 以前,完成多个地址的订单后,应用程序会显示一个空白页面,而不是订单成功页面。
- 店面产品详细信息页面现在会按预期显示新旧价格(含税和不含税)。 GitHub-27500,GitHub-11998
测试
bin/magento dev:tests:run
现在可按预期启动以下测试:all、unit、integration、integration-all、static、static-all、integrity、legacy和default。
AdminMediaGalleryInsertLargeImageFileSizeTest
已重构。
- 单元测试现在与PHPUnit 8兼容。 GitHub-29779
\Magento\TestFramework\TestCase\WebapiAbstract
现在包含一个支持比较测试中预期结果和实际结果的大型嵌套数组的函数。 结果中无关紧要的关键现在可以忽略了。 GitHub-29498
AdminMediaGalleryCatalogUiEditCategoryGridPageTest
不再随机失败。 GitHub-1764
dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest
已改进。 (assert
现在基于XPath
选择器而不是assertStringContainsString
。)GitHub-29700
- 已添加
AdminAnalytics
模块的测试覆盖率。 GitHub-29500
- 集成和API功能测试现在与PHPUnit 9.3兼容。GitHub-30146
- 更正了GraphQL
testRequestCacheTagsForCategoryListOnMultipleIds
测试的问题。 GitHub-29372
- 公司信贷的货币可用性测试已自动化。
- 现在可以在
ApiFunctional TestFramewor
k中正确分析包含URL的标头值。GitHub-26425
—no-tablespaces
已添加到mysqldump
的所有匹配项,这允许在没有PROCESS
权限的情况下运行集成测试(自MySQL 5.7.31 / 8.0.21以来,默认需要运行mysqldump
)。 GitHub-30566
主题
- 向
bin/magento setup:static-content:deploy
命令添加了新的--no-parent
标志,该标志阻止编译主题的父级。 通过这个新标志,您可以避免不必要的编译,从而显着提高静态内容部署过程的性能。 请注意,使用compact
策略时,此新标记不起作用。 GitHub-30184
- 设计配置不再生成DDL操作。 以前,当更新设计配置时,应用程序会生成可能触发MySQL错误的DDL语句。
- 已删除管理员主题中
Magento_ConfigurableProduct
模块中的冗余代码。 GitHub-29857
- 删除了空白主题中多余的少样式导航和未使用的属性。 GitHub-29914
- 为移动视图中的空白主题添加了可折叠的导航功能。 GitHub-30237
- 已优化主题的Web字体加载。 GitHub-29526
- 开发人员现在可以在主题中声明自定义字体时指定字体类型。 GitHub-29719
翻译和区域设置
- 当Admin区域设置为阿拉伯语(
ar_SA - Saudi Arabia
)时, Admin Orders网格日期选取器现在按预期工作。
- 当购物者在注册或添加新地址时输入带有有效邮政编码的阿根廷地址时,应用程序不再显示错误消息。 以前,应用程序显示此错误:
Provided Zip/Postal Code seems to be invalid. Example: 1234. If you believe it is the right one you can ignore this notice.
- 当购物者输入韩国地址的五位邮政编码时,应用程序不再引发错误。
- 添加了对ISO 3166-2:UY中定义的乌拉圭地区的支持。 GitHub-29729
zip_codes.xml
已更新,以对巴西邮政编码强制使用8位数。 GitHub-29984
- 改进了剩余未本地化的短语的本地化。 GitHub-11175
- 现在可以翻译网格搜索输入占位符。 GitHub-30510
- 现在,应用程序仅在启用内联翻译JavaScript模块后才会下载这些模块。 GitHub-29553
UI
- 当购物者输入无效数据时,“创建新帐户”页面上的 创建帐户 按钮保持活动状态。 以前,此按钮处于禁用状态,这会阻止购物者在出错后重新尝试创建帐户。 这是2.4.1中的一个已知问题。GitHub-30513
- 在“管理订单编辑”页面上加载装运网格的工作已得到改进。
- 当SKU将产品添加到购物车时,应用程序现在会按预期在订单页面上显示 与帐单地址相同 复选框。
- 定义有限宽度的CSS类现在按预期应用于管理员 存储 > 配置 > 目录 > XML Sitemap > 生成设置 上的 开始时间 字段。 GitHub-29496
- 更正了条款和条件复选框标签的显示问题。 GitHub-24060
- 当层价格不可用时,应用程序不再在产品页面上显示层价格块的CSS代码。 GitHub-29194
- 图像视图详细信息页面上的按钮位置已重新排序,以符合用户界面准则。 GitHub-1783
- 优惠券代码文本字段现在在Internet Explorer/EDGE浏览器中以适当的宽度显示。
@button__border-radius
变量现在已在lib/web/css/source/lib/variables/_buttons.less
库中定义。border-radius
的默认值为3px
。 以前,border-radius
是硬编码的。 GitHub-28674
- 现在,在达到最小搜索字符串长度之前,迷你搜索字段中的提交搜索按钮(放大镜)处于禁用状态。 GitHub-29704
- 现在,预览模板 按钮在“编辑队列”页面中按预期工作。
- 已将光标位置从 我的帐户 > 礼品注册表 > 共享礼品注册表 上的 消息 字段的中间调整为开头。
- 已解决“添加计划导出”页面上的列布局显示问题。
- 现在,在将属性从一个组移动到另一个组时,应用程序会保留该属性的值。
- 应用程序现在在店面创建帐户页面上的 日期 输入字段旁边显示一个日历图标(按预期)。
- 已向
lib/web/css/source/lib/variables/_typography.less
添加字体粗细大变量。 GitHub-29778
- 过滤器可见性现在可以与管理网格中预期的列可见性配合使用。 GitHub-30345
- 现在,当用户滚动时,应用程序在“以客户身份登录管理员”页面上显示的横幅将保留在页面顶部。 GitHub-29354
- 设置
this.disabled(true)
后,UI选择组件选项不再可见。 GitHub-29098
- 加载Open Sans字体时不再使用
@font-family-name__base
变量。 GitHub-29515
- WAI-ARIA属性
aria-atomic="true"
已添加到错误容器标记中。 GitHub-29560
- 用户界面组件网格现在显示选定项目的准确计数。 以前,当按关键字搜索选定了所有网格项并且购物者随后在选中标题复选框之前取消选定某些项时,网格指示错误的选择次数。 GitHub-29968
- 应用产品不再在发票和发运概览页上显示未呈现HTML。 GitHub-29958
- 现在,单击Admin Stores > Currency Rates 上的 Options,会将用户定向到“系统配置”页面的扩展货币选项部分。 GitHub-29336
- 改进了对在使用选择器构件类型时根据
adminhtml
构件的其他条件显示构件的支持。 GitHub-13316,GitHub-7252,GitHub-6868
- 改进了Luma主题中确认弹出对话框的文本填充。 GitHub-30452
保险库
Vault
模块现在可从付款信息管理服务的请求中识别付款方式代码。 以前,当购物者使用保存的Braintree信用卡下订单时,即使使用了有效的付款方式,应用程序也会引发此错误:The requested Payment Method is not available
。
顶点
-
修改地址时,现在会按预期删除地址建议。
-
解决了阻止某些客户在其帐户面板中保存其地址的争用条件问题。
-
在某些情况下,顶点地址验证不再将“地址编辑”页添加到全页缓存。
-
现在,当为含税的金额配置了免运费时,将考虑顶点计算的税额。
Web API框架
- 您现在可以使用POST
V1/invoice/:invoiceId/refund
退款产品数量为零且运费为零的发票(例如,{"items": [{"qty": 0, "orderItemId": 6, "extensionAttributes": {}}], "appendComment": false, "notify": true, "isOnline": true, "arguments": {"adjustment_negative": 0.0, "adjustment_positive": 0.99, "shipping_amount": 0}}.
)。以前,应用程序抛出此错误:You can't create a creditmemo without products
。 GitHub-23069
- 您现在可以使用POST
V1/categories
创建或更新类别。 以前,如果将default_sort_by
值设置为数组,则应用程序不会保存该值。 将default_sort_by
值设置为字符串时,应用程序引发此错误:Error occurred during \"custom_attributes\" processing. Attribute \"default_sort_by\" has invalid value. The \"string\" value's type is invalid. The \"string[]\" type was expected. Verify and try again.
- 使用POST
V1/invoices/:id/capture
捕获付款信息现在按预期工作。 以前,应用产品授权订单,但仅在支付网关的站点上获取该订单。
- 当您使用POST
V1/order/:orderId/ship
创建部分装运时,终结点将返回正确数量的已装运产品。
- 使用POST
V1/order/:orderID/invoice
创建的发票现在可以准确地反映按商店贷记支付的部分款项。 以前,当使用商店信用支付部分订单的金额时,创建发票时不会考虑商店信用。
- GET
rest/all/V1/categories
和GETrest/all/V1/categories?rootCategoryId=2
调用现在会按预期返回树中所有类别的已填充name
和product_count
字段。 以前,类别字段值为空。 表名解析程序插件返回了错误的表名,无法按类别获取产品计数。
- 在提供
save_rewrites_history
自定义属性时,PUTV1/categories/:id
端点现在存储为类别URL密钥创建301重定向所需的数据。 GitHub-29174,GitHub-30240
愿望清单
- 现在,当产品被分配给自定义库存来源时,购物者可以将产品添加到愿望清单。 GitHub-3018
- 当客户将产品从店面添加到其愿望清单后,管理员现在可以从“管理员客户”页面访问“管理购物车”页面。 以前,当管理员单击 管理购物车 按钮时,应用程序显示以下错误:
An error has occurred. See error log for details
。
- 共享愿望清单页面上的 添加到购物车 按钮现在可按预期方式用于未登录的匿名用户、来宾用户和用户。
- 现在,购物者可以成功地将产品从一个愿望清单转移到另一个愿望清单。
- 应用程序现在会按预期在愿望清单页面中显示选定的可配置产品属性选项。 GitHub-24091,GitHub-22503
- 已为
\Magento\Wishlist\Controller\Shared\Allcart
实施ActionInterface
。 GitHub-29537
已知问题
问题:[magento_root]/index.php
文件已被删除,对于Apache配置,应用程序现在默认从/pub
中运行。 从子文件夹提供的存储将无法按预期工作,并可能会显示404错误。 解决方法:使用符号链接将安装模拟到子文件夹中。 以下示例使用两个存储(https://shop01.com/shop/
和https://shop02.com/shop/
)来说明如何使用符号链接来模拟子文件夹中的安装。
-
为
https://shop01.com/shop/
创建子目录:code language-bash mkdir magento_root/pub/shop01
code language-bash cd magento_root/pub/shop01
-
在新创建的目录中为存储区的父目录创建符号链接:
code language-bash ln -s ../media media
code language-bash ln -s ../static static
code language-bash ln -s ../../../pub pub
code language-bash ln -s ../.htaccess .htaccess
code language-bash ln -s ../health_check.php health_check.php
-
在新目录(
magento_root/pub/shop01/index.php
)中创建一个index.php
文件并添加此内容:
<?php
require realpath(__DIR__) . '/../../../app/bootstrap.php';
switch ($_SERVER['HTTP_HOST']) {
case 'shop01.com':
case 'www.shop01.com':
$params = $_SERVER;
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'shop01';
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);
break;
default:
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);
break;
}
- 将Apache Server配置为指向新的子目录。 部署配置可能大不相同。 以下是示例服务器配置:
<VirtualHost *:80>
DocumentRoot "magento_root/pub/shop1"
ServerName shop01.com
</VirtualHost>
问题:商家必须从管理员激活Fastly Force TLS功能,才能为所有商店页面启用全局HTTP到HTTPS重定向。 请参阅将Cloud (Force TLS)上所有页面的HTTP重定向到HTTPS知识库文章。
问题:在运行库存的多商店部署中,不能使用addConfigurableProductToCart
GraphQL突变将可配置产品添加到非默认商店视图中的购物车。 (Luma店面不受影响。)应用程序显示此错误: Could not add item to cart. Please check required options and try again
。 解决方法:请改用addProductsToCart
突变。 GitHub-31660
问题:当购物者首次在“付款”页面的“验证码”字段中输入正确的代码时,应用程序未按预期提交付款信息,但显示以下错误: There has been an error processing your request
。 仅当购物者尝试在不输入CAPTCHA代码或输入不正确的情况下下达订单时,才会发生这种情况。 解决方法:刷新页面。
问题:当购物者单击 使用Venmo 支付时,应用程序会按预期在Braintree中创建订单,但不会在Admin中创建该订单。 解决方法:无。 请参阅2.4.2已知问题:BraintreeVenmo付款不起作用知识库文章。
B2B已知问题
问题: B2B购买者可以使用在线付款方式绕过通常的采购订单流程。 如果买方可以将整个结账总额减少到0(例如,通过促销代码或礼品卡),然后移除代码或礼品卡,则可能会发生这种情况。 即使在这些条件下,申请者仍然根据所分配目录中的物品价格下正确数量的订单。 解决方法:为采购订单审批启用在线付款方式时,请禁用礼品卡和优惠券代码。
问题:在禁用 上下文模式 的情况下,当买家尝试使用PayPal Express结帐从采购订单下订单时,会被重定向到购物车。
问题:当采购员创建采购订单,然后导航到结帐页时,应用程序有时显示404错误。 当采购员先前使用在线付款方法创建不同的采购订单而未完成之前的采购就浏览到结帐页面时,会发生此错误。 采购员仍然可以下采购订单。 解决方法:无。
问题:在采购订单结账期间,即使买方在最终结账期间更改了付款方式,特定付款方式的折扣也会保留。 因此,客户可能会获得他们无权享有的折扣。 发生这种情况的原因是,尽管付款方式发生了更改,但仍应用了原始付款方式的购物车规则。 解决方法:无。 请参阅2.4.2 B2B已知问题:更改付款方式后在线采购订单的折扣仍然存在知识库文章。
问题: deleteRequisitionListOutput
查询返回有关已删除的申请列表的详细信息,而不是剩余的申请列表。
社区贡献
我们感谢更广泛的Magento Open Source界,并感谢他们为这一版本做出的贡献。
社区工程团队Magento参与者按月、季度、年维护了主要参与人员和合作伙伴的列表。 从该参与者页面,您可以单击链接以转到GitHub上其合并的PR。
合作伙伴投稿
下表列出了合作伙伴所做的贡献。 此表列出了提出拉取请求的合作伙伴、外部拉取请求以及与其关联的GitHub问题编号(如果可用)。
个人贡献者
下表列出了来自社区成员的贡献。 此表列出了外部拉取请求、与其关联的GitHub问题编号(如果可用)以及参与拉取请求的社区成员。
系统要求
我们的技术栈栈是基于PHP和MySQL构建的。 有关详细信息,请参阅系统要求。
安装和升级说明
您可以使用编辑器安装Adobe Commerce 2.4.2。
迁移工具包
Data Migration Tool可帮助将现有Magento1.x存储数据转移到Magento2.x。此命令行界面包括验证、进度跟踪、日志记录和测试功能。 有关安装说明,请参阅安装数据迁移工具。 考虑浏览或参与数据迁移存储库。
代码迁移工具包可帮助将现有Magento1.x存储扩展和自定义项传输到Magento2.x。命令行界面包括用于转换Magento1.x模块和布局的脚本。