Notes de mise à jour d’Adobe Commerce 2.4.3
Adobe Commerce 2.4.3 introduit des améliorations des performances et de la sécurité ainsi que des améliorations importantes de la plateforme. Les améliorations de sécurité comprennent l’extension de la couverture reCAPTCHA et l’inclusion de la limitation de débit intégrée. Les dépendances des compositeurs principaux et les bibliothèques tierces ont été mises à niveau vers les dernières versions compatibles avec PHP 8.x.
Cette version comprend plus de 370 nouveaux correctifs pour le code principal et 33 améliorations de sécurité. Tous les problèmes connus identifiés dans les notes de mise à jour d’Adobe Commerce 2.4.2 ont été corrigés dans cette version.
Pour plus d’informations sur Adobe Commerce 2.4.2-p2, voir Notes de mise à jour d’Adobe Commerce 2.4.2-p2 .
Autres informations de mise à jour
Bien que le code de ces fonctionnalités soit fourni avec des versions trimestrielles , plusieurs de ces projets (par exemple, B2B, Page Builder et Progressive Web Application (PWA) Studio) sont également publiés indépendamment. Les correctifs de bogues pour ces projets sont documentés dans les informations de mise à jour distinctes et spécifiques au projet disponibles dans la documentation de chaque projet.
Appliquez MC-43048__set_rate_limits__2.4.3.patch pour résoudre le problème de limitation du débit de l’API.
Ce correctif fournit une solution au problème où les API Web ne peuvent pas traiter les demandes qui contiennent plus de 20 éléments dans un tableau. Ce problème affecte les déploiements exécutant Magento Open Source 2.4.3, Adobe Commerce 2.4.3 ou 2.3.7-p1. La limitation de débit intégrée a été ajoutée à ces versions pour empêcher les attaques par déni de service (DoS), et le maximum par défaut a été défini sur 20. Ce correctif rétablit la limite par défaut sur une valeur supérieure. Si vous pensez que votre magasin subit une attaque DoS, Adobe vous recommande d’abaisser les limites d’entrée par défaut à une valeur inférieure afin de limiter le nombre de ressources pouvant être demandées. Voir l’API Web impossible de traiter les demandes avec plus de 20 éléments dans l’article de la base de connaissances de la matrice .
Appliquez AC-384__Fix_Incompatible_PHP_Method__2.4.3_ce.patch pour résoudre l’erreur irrécupérable de PHP lors de la mise à niveau
L’erreur fatale suivante peut se produire lors de la mise à niveau vers Adobe Commerce 2.4.3 :
PHP Fatal error: Uncaught Error: Call to undefined function Magento\Framework\Filesystem\Directory\str_contains() in [...]/magento/vendor/magento/framework/Filesystem/Directory/DenyListPathValidator.php:74
Cette erreur résulte de l'utilisation de la fonction str_contains
, qui est une fonction PHP 8.x. Adobe Commerce 2.4.3 ne prend pas en charge PHP 8.x. Ce correctif remplace cette fonction par une fonction PHP 7.x prise en charge. Voir l’article Correctif d’erreur fatale PHP de la mise à niveau Adobe Commerce 2.4.3, 2.3.7-p1 de la base de connaissances.
Appliquez AC-3022.patch
pour continuer à proposer DHL comme opérateur de transport
DHL a introduit la version 6.2 du schéma et va abandonner la version 6.0 dans un avenir proche. Adobe Commerce 2.4.4 et les versions antérieures qui prennent en charge l’intégration DHL ne prennent en charge que la version 6.0. Les commerçants qui déploient ces versions doivent appliquer AC-3022.patch
dès que possible pour continuer à proposer DHL en tant qu'opérateur de transport. Pour plus d’informations sur le téléchargement et l’installation du correctif, reportez-vous à l’article Appliquer un correctif pour continuer à proposer DHL comme opérateur de transport de la base de connaissances.
Tons clairs
Look pour les éléments suivants de cette version.
Améliorations substantielles de la sécurité
Cette version inclut 33 correctifs de sécurité et améliorations de la sécurité de la plateforme. Bon nombre de ces correctifs de sécurité ont été rétroportés vers 2.4.2-p2 et 2.3.7-p1.
Trente-trois améliorations de sécurité qui aident à fermer les vulnérabilités d’exécution de code à distance (RCE) et de cross-site scripting (XSS)
Aucune attaque confirmée liée à ces problèmes ne s’est produite à ce jour. Cependant, certaines vulnérabilités peuvent potentiellement être exploitées pour accéder aux informations client ou prendre le contrôle des sessions d’administrateur. La plupart de ces problèmes nécessitent qu’un attaquant obtienne d’abord l’accès à l’administrateur. En conséquence, nous vous rappelons de prendre toutes les mesures nécessaires pour protéger votre administrateur, y compris, mais sans s’y limiter, ces efforts : liste d’autorisation IP, authentification à deux facteurs, utilisation d’un VPN, l’utilisation d’un emplacement unique plutôt que /admin
, et une bonne hygiène du mot de passe. Consultez le Bulletin de sécurité des Adobes pour une discussion sur ces problèmes résolus.
Améliorations supplémentaires de la sécurité
Les améliorations de la sécurité de cette version améliorent la conformité aux dernières bonnes pratiques en matière de sécurité, notamment :
-
Un nouveau module externe Composer permet d’éviter toute confusion de dépendance et d’identifier les modules malveillants portant le même nom que les modules internes dans le référentiel de modules public. Voir l’article de blog Adobe Versions du nouveau module complémentaire du compositeur avec la version 2.4.3.
-
La limitation de débit est désormais intégrée aux API pour empêcher les attaques par déni de service (DoS). Les API Web imposent désormais des restrictions sur la taille ou le nombre de ressources (le maximum par défaut est défini sur 20 et peut être configuré sur une valeur différente en fonction des besoins de l’entreprise) qui peuvent être demandées par un client. Voir Limitation du taux pour plus d’informations sur la configuration de ces restrictions.
-
La couverture ReCAPTCHA a été étendue pour inclure :
-
Les API Web qui possèdent des pages d’HTML correspondantes sont traitées par ReCAPTCHA. (Cela exclut les API web accessibles par les intégrations.) La couverture ReCAPTCHA protège les points de terminaison des attaques de spam. Lorsque les API web sont accessibles par un service d'intégration tiers qui utilise OAuth, ReCAPTCHA est désactivé.
-
La page de stockage Passer une commande et les API web liées aux paiements. La protection ReCAPTCHA de ces pages est désactivée par défaut et peut être activée à partir de l’administrateur. Cette couverture ajoute un mécanisme anti-force brute pour protéger les magasins contre les attaques de carding.
-
Améliorations des infrastructures
Cette version contient des améliorations qui améliorent la qualité de la structure et les domaines fonctionnels suivants :
-
Compte client
-
Catalogue
-
CMS
-
L’OMS
-
Importer/Exporter
-
Promotions et ciblage
-
Panier et passage en caisse
-
B2B
-
Zone d’évaluation et de prévisualisation
PayPal Pay Later est désormais pris en charge dans les déploiements qui incluent des PayPal. Cette fonctionnalité permet aux acheteurs de payer une commande en versements bimensuels au lieu de payer le montant total au moment de l’achat.
Nouveau use_application_lock
mode d’indexation. Le mode use_application_lock
vous permet d’activer la réindexation à l’aide de variables d’environnement ou en configurant le fichier app/etc/env.php
. Vous n’avez plus besoin de réinitialiser manuellement l’indexeur après une défaillance lorsque ce mode est activé. Voir Utilisation du mode de verrouillage de l’application pour les processus de réindexation.
Améliorations de la plateforme
La version 2.4.3 n'est pas encore compatible avec PHP 8.x, mais les mises à niveau suivantes de la plate-forme nous rapprochent d'une compatibilité future avec PHP 8.x.
-
Les dépendances de Core Composer et les bibliothèques tierces ont été mises à niveau vers les dernières versions compatibles avec PHP 8.x.
-
La bibliothèque KnockoutJS a été mise à niveau vers la v3.5.1 (la dernière version).
-
La bibliothèque TinyMCE v3 obsolète a été supprimée. Les
Magento_Tinymce3Banner
tests de module et MFTF liés à TinyMCE v3.x ont été supprimés de Adobe Commerce. -
La version 2.4.3 a été testée et confirmée comme compatible avec Redis 6.0.12. (La version 2.4.x reste compatible avec Redis 5.x.)
-
Les dépendances de la bibliothèque Laminas ont été mises à niveau vers des versions compatibles PHP 8.x. Certaines dépendances redondantes ont été supprimées du
composer.json
fichier. Adobe Commerce 2.4.3 utilise Laminas 3.4.0.
Améliorations des performances
Cette version inclut des améliorations qui réduisent le temps d’indexation pour les indexeurs de prix des produits et de règles de catalogue. Les marchands peuvent désormais exclure un site Web d’un groupe de clients ou d’un catalogue partagé, ce qui réduit le nombre d’enregistrements à indexer et améliore les temps d’indexation.
Recherche en direct
Live Search optimisée par Adobe Sensei offre une expérience de recherche intuitive à l’aide d’une intelligence artificielle et d’algorithmes d’apprentissage automatique pour effectuer une analyse approfondie des données agrégées sur les visiteurs. Voir Notes de mise à jour de la recherche en direct.
GraphQL
Cette version ajoute la prise en charge de GraphQL pour les fonctionnalités suivantes :
-
Catalogues partagés
-
Listes de souhaits. La mutation addWishlistItemsToCart déplace les articles de la liste de souhaits spécifiée vers le panier du client.
-
Registres de cadeaux. Les tâches couvertes sont les suivantes :
-
Utilisez la requête giftRegistry pour renvoyer le contenu des registres de cadeaux du client.
-
Search les registres de cadeaux par type, adresse électronique ou identifiant.
-
Créez, mettez à jour ou supprimez des registres de cadeaux.
-
Mettre à jour ou supprimer des éléments d’un registre des cadeaux.
-
Déplacez tous les articles du panier vers le registre des cadeaux.
-
Ajoutez, mettez à jour ou supprimez les inscrits d'un registre de cadeaux.
-
Partager un registre des cadeaux avec les invités.
-
-
Devis négociables. Voir les requêtes
negotiableQuote
etnegotiableQuotes
.Les nouvelles mutations incluent :
-
Itinéraires partagés. La requête d’itinéraireet l’ interface livrableprennent en charge les demandes de routage sur les pages de produit, de catégorie et de CMS. La
urlResolver
requête est obsolète et sa fonctionnalité a été remplacée par laroute
requête.
Pour plus d’informations sur ces améliorations, consultez le Guide du développeur de GraphQL .
B2B
La version 2.4.3 introduit B2B v1.3.2. Cette version comprend plusieurs correctifs de bogues. Voir les notes de mise à jour B2B.
Page Builder
Page Builder est désormais disponible en tant qu’extension groupée dans Magento Open Source. C’est maintenant l’outil d’édition de contenu par défaut pour Adobe Commerce 2.4.3 et Magento Open Source 2.4.3. Il peut remplacer l’éditeur WYSIWG par n’importe quel module tiers.
Page Builder remplace l’éditeur TinyMCE dans les zones d’administration suivantes :
- Page CMS
- Bloc CMS
- Description de la catégorie
- Description du produit
Tout le contenu créé dans TinyMCE a été migré dans Page Builder au format HTML.
PWA Studio
Pour plus d’informations sur les améliorations et les corrections de bogues, voir PWA Studio versions. Voir compatibilité pour obtenir la liste des versions de PWA Studio et leurs versions compatibles.
Outil de compatibilité de mise à niveau
La portée de l’outil de compatibilité de mise à niveau a été étendue en fonction des commentaires de la communauté. Rejoignez notre #upgrade-compatibilité-outil Slack pour obtenir l’assistance de l’équipe produit Adobe et de la communauté, ainsi que pour aider à orienter l’orientation future de l’outil.
Mises à jour des services gérés dans le cloud
Cette version inclut des améliorations de notre prise en charge de Amazon Simple Storage Service (AWS S3) et des services gérés cloud Amazon Aurora. Il fournit une prise en charge certifiée pour AWS ElastiCache, AWS ElasticSearch et AWS Managed Queues (Rabbit MQ). (Nous avons testé la fonctionnalité, les performances et l’intégration de ces services avec Adobe Commerce.)
Intégration Adobe Stock
Cette version inclut l’intégration Adobe Stock v2.1.1.
Extensions développées par le fournisseur
Consultez les rubriques suivantes pour connaître les mises à jour des fonctionnalités et des modifications de cette version :
-
Paiement Amazon. Amazon Pay a été abandonné et sera supprimé dans une version ultérieure de la version 2.4.x. La version 2.4.3 et ultérieure contiendra uniquement des mises à jour de compatibilité et des correctifs pour les bogues majeurs.
Problèmes résolus
Nous avons corrigé des centaines de problèmes dans le code principal de la version 2.4.3.
Installation, mise à niveau, déploiement
- La commande
bin/magento setup:db:status
renvoie désormais un message indiquant que tout est à jour après une mise à niveau réussie. Auparavant, l’application affichait cette erreur :Declarative Schema is not up to date
.
- Les valeurs de configuration sont désormais conservées au rechargement du formulaire lorsque la création d’un nouveau produit configurable échoue. Auparavant, les valeurs étaient perdues lors du rechargement du formulaire et l’application affichait cette erreur :
The value specified in the URL Key field would generate a URL that already exists
. GitHub-32102
- L’application ne renvoie plus d’exception lorsque vous exécutez
bin/magento setup:upgrade
pour effectuer une mise à niveau à partir d’un déploiement de Magento Open Source avec Redis vers Adobe Commerce.
- Les règles de prix du panier créées précédemment s’affichent désormais sur la page du tableau de bord Évaluation du contenu après la mise à niveau d’un déploiement de Magento Open Source vers Adobe Commerce.
- Les déploiements exécutés sur la grappe Galera prennent désormais en charge plus de clients. GitHub-31038
- Les administrateurs peuvent désormais se connecter avec succès à un déploiement lorsque l’application a été installée avec l’option
—use-rewrites=0
ouweb/seo/use_rewrites
définie sur 0 danscore_config_data_table
. GitHub-32100
- Mise à jour de la charge
sortOrder
pourAsyncCssPlugin
. L’application charge désormaisAsyncCssPlugin
avantJsFooterPlugin
. GitHub-30882
Magento\Config\Model\Config\PathValidator
vérifie désormais le chemin d’affichage pour déterminer si un élément existe et, s’il possède un chemin de configuration, utilise le chemin d’accèsconfig.xml
à la place pour la validation. GitHub-27678
- La compilation de fichiers Less avec Grunt ou par compilation côté serveur donne maintenant les mêmes résultats. Auparavant.
.abs- styles
, qui s’étend à d’autres.abs- styles
dans_extends.less
, n’étaient pas sortis correctement lorsqu’ils étaient compilés avec Grunt. Cela entraînait des différences entre les déploiements de production et de développement. GitHub-7231
AdminGWS
- Admin GWS utilise désormais des valeurs
int
pour la condition SQLwebsite_id
dans les collections d’administration pour les administrateurs disposant d’autorisations personnalisées.
Intégration Adobe Stock
- L’application affiche désormais un message informatif et un lien vers la page Admin Magasins > Configuration > Avancé > Système sur la page Rechercher des Adobe Stock lorsque Clé API (ID client) et Secret client ne sont pas définis. Auparavant, l’application affichait cette erreur :
We couldn't find any records
et aucun lien.
Serveur principal
- Les administrateurs disposant d’un accès limité (par exemple, qui se voient attribuer l’accès à un site web uniquement) ne peuvent plus modifier les catégories définies sur la portée globale.
- Le rapport système généré (Système > Assistance > Rapport système) s’affiche désormais correctement. Auparavant, le contenu du rapport n’était pas aligné.
- L’application désactive désormais la validation sur le champ Price comme prévu lorsque le paramètre Prix dynamique est activé lors de la création du lot. Auparavant, l’application entraînait une erreur de validation lorsque vous supprimiez une valeur du champ Price lorsque le paramètre Dynamic price était activé. GitHub-26214
- Les redirections infinies ne se produisent plus lorsque l’URL d’administration diffère de l’URL du site web par défaut dans les déploiements où l’application est configurée pour être accessible à partir de deux URL.
Lot de produits
- Vous pouvez désormais utiliser la mutation
addProductsToCart
pour ajouter un produit en regroupement avec plusieurs cases à cocher à un panier.
- L'indexation des prix des produits groupés est désormais exécutée à l'aide de tables temporaires, ce qui évite de verrouiller les tables de base de données. Auparavant, l’application utilisait des tables physiques, ce qui entraînait des tables verrouillées.
- Le prix d’un article de lot peut désormais être défini sur 0,00. Auparavant, lorsque vous reveniez à la page de modification après avoir défini le prix sur 0,00, le prix renvoyait à sa valeur par défaut. GitHub-32383
- Les détails de la commande pour les commandes qui contiennent des produits en bundle affichent désormais le prix correct pour les produits en bundle si le prix a été modifié avant que la commande ne soit passée.
- L’état du stock de produits en bundle est maintenant mis à jour en fonction de l’état du stock de ses produits enfants. Auparavant, les produits en bundle étaient affichés comme étant en rupture de stock lorsqu’une option était supprimée du produit, et le produit en bundle avait deux options avec le même SKU.
- Un administrateur peut désormais modifier la valeur de l’attribut
Shipment Type
d’un produit en bundle après son déplacement vers un autre groupe d’attributs. Auparavant, cet attribut était toujours enregistré avec une valeurTogether
s’il était déplacé vers un groupe d’attributs autre que le groupe par défaut dans le jeu d’attributs.
- La mutation GraphQL
setGuestEmailOnCart
met désormais correctement à jour le courrier électronique des invités. Auparavant, les tableaux d’adresse de devis et de guillemets n’étaient pas mis à jour.
- L’ajout, la suppression ou la mise à jour d’un produit enfant vers un produit groupé via des appels API REST déclenche désormais la réindexation comme prévu. Auparavant, ces actions ne déclenchaient pas de réindexation. Par conséquent, le produit du lot ne modifiait pas son état de stock tant que la réindexation manuelle n’était pas effectuée.
- L’application affiche désormais la plage de prix correcte pour les produits groupés avec des prix de niveau. GitHub-30284
- L’application affiche désormais le même prix total que celui attendu sur la page Panier et dans l’étape d’expédition du workflow de passage en caisse une fois que le prix d’une option de lot a changé.
- Vous pouvez désormais configurer avec succès un produit groupé en y accédant à partir du panier d’un client. Auparavant, la page Configurer le produit ne se chargeait jamais complètement et vous ne pouviez pas enregistrer vos paramètres.
- Les marchands peuvent désormais attribuer un prix unique pour un produit groupé sur chaque vue de magasin d’un déploiement multimagasin. Les prix spécifiques au site Web sont enregistrés dans le
catalog_product_bundle_selection_price
tableau. Auparavant, l’application ne basait pas le prix d’un produit groupé sur l’étendue du site Web, même lorsque l’option Stocke > configuration > catalogue > catalogue > prix catalogue > étendue de prix catalogue était définie surWebsite
. Aucun prix spécifique au site Web n’a été enregistré danscatalog_product_bundle_selection_price
. GitHub-12584
- Les factures des produits groupés affichent désormais la quantité correcte pour les produits simples associés lorsque la tarification dynamique est désactivée. Auparavant, les produits simples associés au produit groupé avaient la quantité du produit parent, et non le produit groupé). GitHub-30802
- La
updateProductsInWishlist
mutation met désormais à jour avec succès les articles qui appartiennent à un produit groupé dans une liste de souhaits. Auparavant, au lieu de mettre à jour l’élément de la liste de souhaits, cette mutation supprimait l’élément et en créait un nouveau, ce qui modifiait l’ID de l’article.
- Vous pouvez désormais définir les
required_options
attributs ethas_options
bundle comme prévu lors de la création ou de la mise à jour d’un produit bundle à l’aide duPOST /V1/product/:sku
point de terminaison. Auparavant, ces attributs personnalisés étaient définis sur 0 (zéro) malgré les efforts déployés pour le définir sur 1 (un).
- Les données de produit du bundle qui manquaient auparavant sont maintenant incluses dans le processus d’évaluation. Cela résout les incohérences dans le comportement du produit lorsque les acheteurs ont acheté un produit groupé à partir de la page de liste de produits par rapport à son ajout directement à partir d’une page de produit.
Cache
- Le fichier
varnish6.vcl
a été mis à jour afin de contourner la mise en cache de la page du client.
CAPTCHA
- CAPTCHA valide désormais correctement les données fournies par un acheteur et les champs CAPTCHA s’affichent désormais comme prévu après les multiples tentatives infructueuses d’extraction d’un acheteur avec PayPal Payflow Pro.
- La validation CAPTCHA n’échoue plus de manière aléatoire sur la page de paiement du workflow de paiement.
- L’application affiche maintenant les champs CAPTCHA comme prévu après avoir dépassé le nombre de tentatives d’achèvement infructueuses. Auparavant, bien que l’application vous invitait à réessayer le défi CAPTCHA, elle n’affichait pas les champs CAPTCHA.
- CAPTCHA fonctionne maintenant comme prévu sur la page de paiement. Auparavant, après qu’un acheteur répondait correctement à un défi CAPTCHA, le chargeur sur la page de paiement ne s’était jamais terminé et l’application affichait cette erreur :
captchaData[formId] is undefined
. (Cette erreur se produisait uniquement lorsque le client utilisait le même navigateur à partir duquel il avait précédemment accédé à un déploiement exécutant 2.3.5-p1.)
_.isEmpty()
Les archivages dans ledefaultCaptcha.js
fichier se terminent maintenant avec succès. Auparavant, ces vérifications ne se terminaient pas et, par conséquent, la page d’extraction ne pouvait pas se charger après la mise à niveau. GitHub-31641
Panier et passage en caisse
- L’application prend désormais en compte les localisateurs décimaux spécifiques aux paramètres régionaux lors de la conversion et de la mise à jour de la quantité de produit dans le panier.
- Les commandes n’omettent plus le nom du client fourni avec une adresse de livraison. Auparavant, les noms étaient omis car l’indicateur n’était
same_as_billing
pas enregistré dans la base de données.
- Les liens vers les registres de cadeaux persistent désormais comme prévu lorsque vous modifiez un produit dans le panier. Auparavant, ces liens disparaissaient lorsque vous cliquiez sur le bouton Mettre à jour le panier .
- Tous les messages de file d’attente pour le consommateur
quoteItemCleaner
remplacent désormais leur état parcomplete
comme prévu après la suppression de plusieurs produits. Auparavant, un seul message pour ce consommateur modifiait son état encomplete
et les autres changeaient d’état enin progress
.
- L’application affiche désormais le message de validation des conditions générales dans le bloc correspondant uniquement lorsqu’un acheteur clique sur le bouton Passer commande . Auparavant, l’application affichait ce message dans le bloc Appliquer le code de remise chaque fois qu’un acheteur changeait de mode de paiement dans le workflow de passage en caisse :
The order wasn't placed. First, agree to the terms and conditions, then try placing your order again
.
- Vous êtes désormais redirigé vers la page de passage en caisse comme prévu après l’ajout d’un produit de regroupement au panier à partir d’un aperçu de mise à jour de planification et d’un clic sur le panier. GitHub-447
- L’application ignore désormais les modifications apportées au formulaire d’adresse de facturation à l’étape de paiement de passage en caisse si l’acheteur ne parvient pas à cliquer sur le bouton Mettre à jour et est retourné à l’étape de livraison.
- L’application affiche désormais un message d’erreur informatif et ne met pas à jour la quantité du produit lorsqu’un acheteur ajoute une quantité de produit non valide et clique sur le bouton Mettre à jour les articles et les quantités sur la page Gérer le panier d’achat. Auparavant, l’application mettait à niveau la quantité du produit et n’affichait pas de message d’erreur. GitHub-459
- Les produits avec une option
(File)
personnalisable incluent désormais des liens actifs comme prévu tout au long du processus de paiement multi-expéditions. Ce lien était auparavant manquant. GitHub-31095
- Le panier d’administration affiche désormais les prix des produits dans les bonnes devises pour les magasins qui prennent en charge plusieurs devises. Auparavant, les prix étaient convertis plusieurs fois dans la devise spécifiée : d’abord, lorsque des produits étaient ajoutés au panier à partir de la vitrine, puis de nouveau, lorsque la commande était ensuite rendue sur l’administrateur.
- L’application vide désormais le panier comme prévu une fois qu’un administrateur a passé une commande de l’administrateur créée par un acheteur sur le storefront. Auparavant, lorsque le client s’était reconnecté après que l’administrateur avait terminé la commande, le panier d’achat contenait toujours le contenu de la commande. GitHub-30262
- Les acheteurs peuvent désormais ajouter un produit à leur panier dont le prix minimum publicitaire (MAP) dépasse le prix normal.
- Les acheteurs peuvent désormais modifier leur adresse de facturation à partir du processus de paiement lorsqu’ils passent à la caisse avec plusieurs adresses.
- Toutes les transactions de paiement payantes créées par les invités sont désormais enregistrées dans la base de données et visibles dans l’administration comme prévu. Auparavant, seul un petit sous-ensemble de commandes simultanées était enregistré dans la base de données et la plupart des commandes étaient perdues en raison de délais d’attente résultant de verrous de base de données. GitHub-25862
- L’application affiche désormais correctement les messages de bienvenue en ligne qui contiennent des caractères spéciaux lorsqu’un invité place un produit dans le mini-panier. Auparavant, l’application n’ajoutait pas le produit au mini-panier et n’affichait pas le message de bienvenue. GitHub-32250
- La page d’expédition du processus de paiement se charge désormais correctement lorsque la livraison en magasin est activée. Auparavant, l’application générait une erreur JavaScript et la page de paiement d’expédition ne s’affichait pas complètement.
- Ajout de l’argument
itemResolvers
au fichier cataloguedi.xml
. Par conséquent, le passage en caisse n’est plus interrompu si les modules de produit configurables et groupés sont désactivés. GitHub-30860
- L’application affiche maintenant les boutons radio dans la section Informations de paiement et d’expédition , comme prévu lors du flux de travail de réapprovisionnement de l’administration. GitHub-30257
- L’application applique désormais correctement les règles de prix du panier avec une remise fixe au niveau du panier lorsque le panier contient un produit groupé avec plusieurs options. Auparavant, la règle du prix du panier n’était pas complètement appliquée à la commande. GitHub-30952
- Le bouton Ajouter au panier en mode Liste de catégories fonctionne maintenant comme prévu. GitHub-32232
- Vous pouvez désormais utiliser POST
/V1/carts/mine/items
pour ajouter une quantité personnalisée de produits groupés à un panier. GitHub-26909
- L’application ne remplit plus la zone d’adresse de facturation du workflow de paiement avec l’adresse de livraison. Auparavant, lorsque le champ État/Province de l’adresse de facturation était vide et que les adresses de livraison et de facturation différaient, l’application remplissait le champ État/Province de l’adresse de facturation avec les informations de l’adresse de livraison. GitHub-31608
Catalogue
- La mise à jour en masse des attributs Activer les incréments Qté et Incréments Qté fonctionne désormais comme prévu. GitHub-29544
- Vous pouvez désormais dupliquer avec succès un catalogue partagé contenant des SKU numériques uniquement. Auparavant, l’application entraînait une erreur lorsque vous tentiez de dupliquer un catalogue partagé, car la classe
\Magento\Catalog\Model\ProductIdLocator
ne fonctionnait pas correctement avec les SKU numériques uniquement.
- L’application ne renvoie plus d’erreur JavaScript une fois que vous avez activé la synchronisation des produits récents avec l’administrateur. Auparavant, l’application affichait cette erreur JavaScript :
Cannot read property 'status' of undefined
.
- Les mises à jour personnalisées de la mise en page des thèmes sont désormais appliquées comme prévu. Auparavant, les mises à jour de la disposition des thèmes personnalisés étaient ignorées.
- Le cache des catégories de produits est maintenant effacé comme prévu par
cron
lorsindexer_update_all_views
de l’exécution. Auparavant, les décomptes de produits sur la page Catégorie après la réindexation étaient incorrects.
- Les valeurs d’attribut restent désormais inchangées lorsqu’un attribut n’est pas spécifié dans une requête d’API REST de mise à jour de produit pour une vue de magasin. Auparavant, si aucun attribut n’était spécifié, l’application réinitialisait la valeur de l’attribut à sa valeur de portée par défaut.
- La grille Admin products (Admin Catalog > Products) affiche désormais le nombre de produits correct lorsque les produits sont filtrés par SKU.
- L’application affiche désormais un état de stock précis lorsqu’un produit est ajouté à une page CMS lorsque les autorisations de catégorie sont activées et empêche l’affichage du prix pour le groupe de clients spécifié. Auparavant, tous les produits étaient affichés comme étant en rupture de stock, quel que soit le statut réel du stock.
- Le champ de saisie des prix du bloc Groupe de clients de tarification avancée a désormais une largeur minimale de cinq chiffres. Auparavant, seuls deux symboles étaient visibles dans ce champ sur les affichages à basse résolution.
- L’application supprime désormais une image multimédia de produit après la suppression d’un produit. Auparavant, l’image du média de produit restait dans le dossier après suppression réussie du produit.
- La mise en page se met désormais à jour comme prévu lorsque vous créez ou modifiez un produit dans l’administrateur, puis créez une mise à jour de la conception de planification. GitHub-32007
- Un attribut de produit personnalisé avec une valeur de zéro peut désormais être enregistré comme vide. Auparavant, l’application n’avait pas mis à jour cette valeur sur vide.
- Les fichiers de mise à jour de la disposition des catégories personnalisées s’appliquent maintenant aux produits comme prévu. Auparavant, le descripteur du fichier de mise à jour (
catalog_category_view_*
) ne correspondait pas au descripteur du produit. GitHub-27285
- Le tri a été désactivé pour la colonne Taxe fixe des produits (FPT) de la liste des produits d’administration. Auparavant, la page Produits ne pouvait pas être rechargée une fois la colonne FPT triée.
- L’aperçu du widget de produits Page Builder fonctionne désormais comme prévu dans un déploiement de plusieurs sites web lorsque les produits correspondants ont un prix différent sur chaque site web.
- Le tri par position sur la GET
/rest/V1/products/?searchCriteria[filterGroups]
de recherche de produits fonctionne maintenant comme prévu. Auparavant, la collection de produits n’avait pas de valeur de champposition
pour le tri. GitHub-31591
- Les utilisateurs administrateurs peuvent désormais voir les espaces doubles dans les champs Nom et SKU de la grille de produits. Auparavant, l’application réduisait plusieurs espaces en un seul.
- Les produits sont maintenant affichés comme en rupture de stock sur la vitrine lorsque la quantité vendable sur l’administrateur est de 0. Auparavant, ces produits étaient répertoriés comme étant en stock sur la vitrine et l’application affichait un bouton Ajouter au panier actif. GitHub-31117
- Les administrateurs peuvent désormais ajouter des produits avec des options
(File)
personnalisables à la grille Articles commandés à partir de la section Panier (colonne Activités du client) de la page Client administrateur. Auparavant, l’application n’ajoutait pas l’élément à la liste car la valeur n’était pas correctement formatée avant d’être insérée dans\Magento\Catalog\Model\Product\Type\AbstractType::_prepareOptions
.
- L’application n’invite plus les acheteurs à sélectionner une option de produit pour un produit groupé qui n’a qu’une seule option.
- L’application affiche désormais toutes les sous-catégories dans les mises à jour de mise en page (catégories ancrantes et non ancrées) lors de la création d’un nouveau widget.
- La
product
requête n’écrase plus les valeurs par défaut de toutes les vues de magasin dans un déploiement multi-magasin lorsqu’un nom de produit est mis à jour pour une seule vue de magasin. GitHub-31083
- Adobe Commerce met à jour le nombre total de pages comme prévu lorsque vous modifiez la valeur par page de la liste Produits liés à l’administration, ventes incitatives et ventes croisées. GitHub-31059
- Les administrateurs peuvent désormais ajouter des produits avec plusieurs options personnalisables
(File)
à une commande par SKU.
- L’application ne renvoie plus d’erreur lorsqu’un administrateur disposant d’autorisations restreintes ajoute un widget Produit à une page CMS dans l’Admin. Auparavant, l’application renvoyait cette erreur lorsque l’administrateur cliquait sur le bouton Enregistrer :
We are sorry, an error has occurred while generating the content
.
- Les pages de détails du produit s’ouvrent désormais avec l’option de date personnalisable remplie avec la date de la commande précédente lorsque l’utilisation JavaScript calendrier est activée. Le résolveur de valeur d’option de date personnalisée revient désormais à un format alternatif si la valeur n’est pas formatée en fonction de la configuration actuelle. Auparavant, la valeur de l’option de date personnalisée était vide.
- L’application n’affiche plus qu’une seule erreur dans le panier lorsque le produit est en rupture de stock. Auparavant, l’application affichait des messages redondants. GitHub-27469
- Les administrateurs peuvent désormais ajouter un produit avec une option
(File)
personnalisable à une commande par UGS. GitHub-30285
- Vous pouvez maintenant enregistrer un produit et un prix sans spécifier
type_id
. GitHub-13639
- Les produits de groupe sont désormais disponibles sur la vitrine comme prévu lorsqu’une requête REST
PUT /V1/products/:sku/links
est utilisée pour associer un nouveau produit enfant à un nouveau produit de groupe. Auparavant, les produits n’étaient pas correctement indexés après l’exécutionbin/magento cron:run
de la balise .
- Vous ne pouvez plus créer un produit avec une
NULL
valeur SKU. Auparavant, vous pouviez créer un produit sans valeur SKU via un importateur personnalisé ou directement dans la base de données, mais lorsque vous essayiez de le modifier à partir de l’administrateur, l’application générait une erreur. GitHub-27411, GitHub-32525
- L’ajout des options personnalisées requises à un produit simple ne le supprime plus des produits composites parents sans avertissement. L’application affiche maintenant un avertissement informatif et n’enregistre pas le produit. Auparavant, l’application enregistrait les modifications du produit et n’affichait pas d’avertissement. GitHub-30492
Règle de catalogue
- La requête
products
renvoie désormais les valeurs actuelles lorsqu’une règle de prix de catalogue s’applique à un article. GitHub-26738
- Les tables temporaires qui commencent par
catalogrule_product__temp
sont maintenant supprimées comme prévu lorsque la réindexation échoue après l’expiration, la désactivation ou l’inactivité d’une règle de panier ou de catalogue. GitHub-22273
- Les fuseaux horaires sont désormais appliqués de la même manière dans
\Magento\CatalogRule\Model\Indexer\IndexBuilder::reindexById
et\Magento\CatalogRule\Model\Indexer\IndexBuilder::reindexByIds
. GitHub-29549
Contenu CMS
- Les images volumineuses sont désormais redimensionnées comme prévu lors de la mise en ligne lorsque le paramètre de configuration Activer le redimensionnement frontal est activé.
- Correction de la gestion des erreurs pour le contrôleur d’enregistrement de la page CMS. Auparavant, lorsqu’un objet
Error
était généré sur l’événementcms_page_prepare_save
, l’application transmettait cet objet à la fonctionaddExceptionMessage
, rompant ainsi son contrat, car cette fonction attend unException
. Ce problème a été résolu en ajoutant un message d’erreur à l’aide de la fonctionaddErrorMessage
. GitHub-30149
- Vous pouvez désormais attribuer une nouvelle page à plusieurs noeuds à partir de l’onglet Hiérarchie de la page de modification de CMS. Auparavant, une violation de contrainte unique se produisait lorsque vous tentiez d’affecter la page à un noeud. GitHub-363
Produits configurables
- L’application ne duplique plus les vignettes de produit dans la galerie d’images d’un produit lorsque vous cliquez sur les options configurables d’un produit.
- La fenêtre contextuelle de configuration que l’application affiche lorsque vous modifiez un produit configurable à partir d’une liste de souhaits se ferme désormais comme prévu lorsque vous cliquez sur le bouton OK .
- L’application génère désormais correctement des factures pour les commandes qui ne contiennent qu’un seul produit configurable. GitHub-31143
- Les acheteurs peuvent désormais ajouter des produits configurables à leur panier à partir d’une vue de magasin autre que celle par défaut. Auparavant, lorsque l’acheteur sur une vue de magasin autre que celle par défaut tentait d’ajouter un produit configurable, l’application affichait cette erreur :
Could not add item to cart. Please check required options and try again
. GitHub-31660
Stratégie de sécurité du contenu CSP)
- La stratégie de sécurité du contenu prend désormais en charge le chargement des images et des polices codées en base64 via
data: scheme
.
cron
- Les requêtes de nettoyage Cron ont été refactorisées pour réduire ou éliminer les problèmes de performances suivants :
cron
tâches restées bloquées dans un état en attente, requêtes MySQL de plus en plus lentes et augmentation de l’utilisation du processeur. GitHub-26507
cronjobs
qui sont en étatrunning
depuis plus de 24 heures sont désormais automatiquement changés en étaterror
. Par conséquent, une nouvelle instance de cette tâche peut s’exécuter à nouveau et vous n’avez pas besoin de modifier manuellement l’état de la tâche lorsqu’une tâche reste incorrectement définie sur l’étatrunning
. Auparavant, si uncronjob
était bloqué dans l’étatrunning
, l’application empêchait le démarrage de nouvelles instances de la même tâche et vous deviez modifier manuellement l’état de la tâche. GitHub-8933
cron
tâches se terminent désormais comme prévu et ne renvoient plus cette erreur de sérialisation :[Magento\Framework\DB\Adapter\DeadlockException]SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction, query was: DELETE FROM cron_schedule WHERE (status = 'missed') AND (job_code in ('indexer_reindex_all_invalid', 'indexer_update_all_views', 'indexer_clean_all_changelogs')) AND (created_at < '2018-09-28 18:32:28')
. GitHub-18409
indexer_update_all_views
les tâches cron s’exécutent désormais comme prévu après un échec précédent. L’exécution ayant échoué est marquée comme un échec danscron_schedule schedule
, et l’exécution suivante n’échoue pas automatiquement. Auparavant, la tablecron_schedule
était remplie avec les tâches en attente et la tâche cronindexer_update_all_views
ne s’exécutait pas. GitHub-23054
cron
blocages ne se produisent plus suite à la tentative decron
de définir un verrouillage dans les déploiements volumineux où des groupes se chevauchent. GitHub-8933
cron
blocages ne se produisent plus sur la tablecron_schedule
après l’exécution de quelquescron
tâches seulement. GitHub-22438
Attributs du client personnalisés
- Le champ État du carnet d’adresses du compte client du storefront est maintenant chargé comme et reste un élément de page de liste déroulante. Le bouton Submit est maintenant désactivé tant que tous les éléments de page n’ont pas été complètement chargés. Auparavant, l’application chargeait ce champ en tant que zone de texte avant de le rendre en tant qu’élément de liste déroulante et les acheteurs pouvaient saisir et enregistrer des valeurs dans le champ de texte, ce qui entraînait par la suite une erreur lors de l’extraction.
- L’application affiche désormais correctement les attributs d’adresse client personnalisés sur les pages storefront et Admin order. Auparavant, l’option sélectionnée de l’attribut de liste déroulante était absente de la section Informations sur l’adresse , et la valeur de l’attribut d’entrée contenait le code d’attribut. GitHub-508
- L’application ne renvoie plus d’erreur lorsque vous enregistrez un attribut d’adresse du client avec une pièce jointe dans le champ Admin Customer address (Adresse client de l’administrateur) lors du téléchargement des fichiers. Ce problème se produisait en raison d’une instruction de retour manquante dans l’action du contrôleur. Auparavant, l’application générait cette erreur :
Something went wrong while saving the file
.
- Les appels d’API REST GET panier renvoient désormais des valeurs d’attribut personnalisées correctes pour les adresses de facturation et d’expédition. Auparavant, les attributs d’adresse personnalisés étaient affichés de manière incorrecte dans la page des détails de la commande de la page de vitrine Mon compte et dans l’administration.
- L’application gère désormais avec succès les fichiers qui contiennent des attributs d’adresse client avec type
file (attachment)
d’entrée . Auparavant, l’application générait cette erreur lors du téléchargement du fichier joint :Something went wrong while saving the file
.
Client
- L’e-mail de crédit de magasin prend désormais en compte la portée sélectionnée et est envoyé à partir de la bonne adresse e-mail.
- Le filtrage par date de création du compte produit désormais des résultats conformes aux paramètres de fuseau horaire configurés et qui capturent tous les comptes créés appropriés.
- Le filtre de grille client utilise désormais une option de site web correcte pour un utilisateur restreint si les données ont été précédemment mises en cache. Auparavant, le filtre de grille client récupérait les paramètres du site web du cache et incluait des données incorrectes pour les utilisateurs restreints.
- L’application ne renvoie plus d’exception sur la page Admin Customers lorsqu’un site web est supprimé dans un déploiement de plusieurs sites web. Auparavant, lorsqu’un administrateur tentait d’accéder à la liste complète des clients, l’application n’affichait pas tous les clients et affichait cette erreur :
The website with id 2 that was requested wasn't found. Verify the website and try again
.
- Les administrateurs autorisés peuvent désormais réaffecter des clients à différents sites web à partir de l’onglet Informations du compte du client.
- Vous pouvez désormais télécharger un fichier avec succès lors de la création d’un attribut d’adresse client avec un type d’entrée de
(File)
. Auparavant, lorsque vous essayiez de télécharger et d’enregistrer un fichier, l’application générait cette erreur :Something went wrong while saving the file
.
Segment de clients
- L’application affiche désormais les produits associés en fonction des segments de clients sur le storefront, comme prévu. Auparavant, l’application n’affichait pas cette section lorsqu’une règle de produits associée était créée pour des segments de clients spécifiques.
- Les blocs dynamiques s’affichent désormais pour les clients enregistrés dans leur panier lorsque le segment de client correspondant est appliqué aux invités et aux clients enregistrés. Auparavant, l’application affichait le bloc uniquement pour les invités.
- Les segments de clients sont désormais automatiquement mis à jour une fois qu’une commande est passée par l’administrateur. Auparavant, après avoir créé une commande Admin, l’utilisateur Admin devait actualiser manuellement les données de segment associées en accédant aux segments de clients associés et en cliquant sur le bouton Actualiser les données du segment.
- L’application affiche désormais des blocs dynamiques dans le panier pour tous les clients des segments de clientèle concernés. Auparavant, les invités ne voyaient pas de blocage, même lorsque le segment de clientèle comprenait à la fois des invités et des clients enregistrés.
- Les problèmes de performances de la base de données résultant des règles de segmentation des clients utilisant la
Product was Ordered
condition ont été résolus.
- Un observateur d’événement de segment de clientèle pour l’API REST/SOAP a été ajouté. Par conséquent, les segments de clients sont désormais automatiquement mis à jour comme prévu si les critères définis dans les segments sont mis en correspondance lorsque les commandes sont passées via l’API REST/SOAP.
- Un processeur d’événements de segment client a été ajouté pour les demandes GraphQL. Auparavant, les remises des règles de prix du panier n’étaient pas appliquées au panier lorsqu’un segment de client était utilisé dans une condition de règle de prix du panier. GitHub-371
Répertoire
- L’application ne renvoie plus d’exception lorsqu’un acheteur entre dans un code postal non valide pendant la section d’expédition du workflow de passage en caisse. GitHub-23371
Téléchargeable
- L’application affiche désormais des liens vers des produits téléchargeables dans l’e-mail Nouvelle commande lorsque la commande contient à la fois un produit téléchargeable et un produit configurable avec une option téléchargeable. Auparavant, l’application affichait le lien vers le produit téléchargeable autonome, mais pas le lien vers le produit configurable avec une option téléchargeable.
Bloc dynamique (anciennement bannière)
- Les blocs dynamiques ne s’affichent plus que sur la page indiquée. Auparavant, l’application affichait toutes les bannières attribuées au widget sur toutes les pages si aucun bloc dynamique n’était spécifié.
- Vous pouvez désormais enregistrer les blocs dynamiques avec du contenu vide.
EAV
- Les valeurs de date d’attribut de l’adresse client sont désormais enregistrées au format quatre chiffres au lieu de deux.
- Le lien de réinitialisation du mot de passe sur la page Réinitialisation du mot de passe de l’administrateur fonctionne désormais comme prévu. Auparavant, lorsqu’un modèle personnalisé était utilisé pour la page de réinitialisation du mot de passe administrateur, l’application affichait ce message lorsqu’un administrateur cliquait sur le lien à l’intérieur de l’email :
Your password reset link has expired
. Cela s’est produit car le modèle de courrier électronique personnalisé contenait une variable incorrecte pour l’ID utilisateur.
- L’envoi d’emails de clients depuis l’administrateur fonctionne désormais correctement lorsqu’il est activé au niveau de l’affichage en magasin. Auparavant, l’application n’envoyait pas d’e-mails du client lorsque les paramètres de notification électronique étaient activés au niveau de la vue de magasin, mais pas au niveau global.
- L’application envoie maintenant des e-mails comme prévu dans les déploiements multi-sites où tous les sites Web n’ont pas activé l’envoi asynchrone d’e-mails. Auparavant, si au moins un site Web avait désactivé ce paramètre, le courrier électronique n’était envoyé à partir d’aucun site Web, même lorsqu’il était activé. Les e-mails de facture, d’expédition et de note de crédit présentaient des problèmes similaires. Toutefois, les e-mails de commentaires de commande, de commentaires de facture, de commentaires d’expédition et de commentaires de note de crédit ont été envoyés avec succès. GitHub-31950
- Le message électronique que l’application envoie lorsque vous partagez un registre de cadeaux à partir de l’administrateur contient désormais un lien valide vers l’emplacement du registre. Auparavant, la prise de ce lien entraînait une erreur 404. GitHub-504
- Les factures et les factures PDF incluent désormais les mêmes prix que prévu pour les produits groupés. Auparavant, les PDF de facture incluaient le prix incorrect pour les produits groupés. GitHub-12856
- Le casting de chaînes a été ajouté à la méthode de filtre de modèle d’email pour garantir que la valeur renvoyée est une
string
valeur . Auparavant, lorsqu’une exception était interceptée alors qu’elle n’était pas en mode développeur, l’application renvoyait unphrase
objet. Cela a déclenché à son tour un .Uncaught TypeError
GitHub-32671
- Les e-mails de confirmation de commande sont désormais envoyés comme prévu lorsque l’envoi asynchrone est activé (stocke > configuration > e-mails commerciaux > commerciaux > Paramètres généraux > l’envoi asynchrone) sur un site Web dans un déploiement multisite. GitHub-31950
- L’application enregistre maintenant une erreur comme prévu lorsqu’une exception se produit lorsqu’un client tente d’envoyer un e-mail à partir du formulaire Contactez-nous. GitHub-23645
Frameworks
- Les classes parents dans l’administrateur sont désormais vérifiées pour l’annotation docblock avec la classe d’origine et les interfaces héritées. Auparavant, comme les classes parents n’étaient pas cochées, l’exécution d’actions liées aux clients dans l’administrateur qui déclenchait un événement générait une erreur. L'application a consigné cette erreur dans le journal des exceptions :
report.CRITICAL: Method's return type must be specified using @return annotation.
.
- L’application ne renvoie plus d’erreur fatale lorsque le serveur Redis est arrêté dans un déploiement où la mise en cache de la page Redis est activée.
- L’application honore désormais le paramètre Exclure le dossier multimédia de la sauvegarde lorsque la sauvegarde est activée avec
bin/magento config:set system/backup/functionality_enabled 1
. Auparavant, le dossier multimédia était sauvegardé malgré ce paramètre car le chemin d’accès à/magento
était formé de manière incorrecte avec un double //.
- L’application traduit maintenant toutes les chaînes traduisibles comme prévu pour la page du panier d’administration. Auparavant, le chargement de traduction arrivait trop tard et ignorait tous les observateurs abonnés à l’action du contrôleur avant l’expédition. GitHub-31849
- La validation de formulaire sur la page Créer un nouveau compte client fonctionne désormais correctement lorsque le paramètre Se connecter en tant que client activer l’extension est désactivé. Auparavant, l’application générait une erreur JavaScript.
- L’utilisation
bin/magento setup:db-schema:split-sales
pour déplacer des tables de base de données fonctionne maintenant comme prévu. Tables sont maintenant créées et renseignées correctement avec les données. Auparavant, puisque la vérification de l’existence de la table était incorrecte, l’application généraitSQLSTATE
des erreurs lors de l’exécutionbin/magento setup:db-schema:split-sales
de .
- La gestion des exceptions pour les processus enfants bifurqués par
ProcessManager
a été améliorée. Lorsqu’une exception se produit maintenant, le processus principal se ferme et un message d’erreur ne s’affiche qu’une seule fois. Auparavant, plusieurs échecs d’indexeur étaient consignés et plusieurs messages étaient affichés. GitHub-30622
- Les plug-ins Global Adobe Commerce (par exemple,
webapi_rest
etgraphql
) ne sont plus déclenchés pour un nouveau type de zone personnalisée lorsque ledi.xml
fichier de ce fichier de zone ne contient aucun plug-in enregistré.
- Les exceptions survenant lors de l’initialisation ne sont plus mises en cache et déclenchent désormais un code de réponse 500.
- Les vendeurs peuvent désormais attribuer ou supprimer une image à et depuis un événement de catalogue par vue de magasin. Auparavant, lorsque vous modifiez la vue de magasin lors de la modification d’un événement de catalogue, la case à cocher Supprimer l’image n’était pas active et l’application affichait cette erreur :
Uncaught ReferenceError: toggleValueElements is not defined at HTMLInputElement.onclick
. GitHub-364
- Le dernier gestionnaire fusionné dans un fichier
communication.xml
ne remplace plus tous les gestionnaires créés précédemment. GitHub-29528
Correctifs généraux
- L’application affiche désormais le nombre correct d’étoiles sur la page Mes avis produits et sur la page MyAccount Avis récents. Auparavant, l’application appliquait des étoiles de révision uniquement à la première révision et laissait les autres critiques sur la page sans étoile.
- Les liens de compte dans les en-têtes respectent désormais les normes WCAG. Auparavant, les liens de compte dans les en-têtes contenaient des ID dupliqués, ce qui entraînait l’échec de la validation WCAG.
- L’application enregistre désormais les dates d’événements du catalogue dans les fuseaux horaires UTC. Auparavant, l’événement de catalogue applicationsaved datait dans le fuseau horaire de l’utilisateur.
- L’application ne renvoie plus les erreurs générées par le journal système lorsqu’un client invité utilise une adresse non valide. Auparavant, l’application affichait cette erreur par intermittence au lieu de restituer la page :
No such entity with addressId
. GitHub-15115
- Le processus de redimensionnement des images ne s’arrête plus pour les images dans un format non pris en charge. Auparavant, lorsqu’un
catalog:images:resize
format d’image non pris en charge était rencontré, le processus s’arrêtait et l’application affichait cette erreur :bin/magento catalog:images:resize Unsupported image format
.
- La prise en charge WEBP et AVIF des images de logo a été ajoutée à l’administration. GitHub-32495
- Vous ne pouvez plus modifier l’étendue de l’attribut
media_gallery
. Auparavant, lorsque vous redéfinissez l’étendue de l’attributmedia_gallery
surglobal
, l’application générait une erreur.
- Les produits associés qui ont été ajoutés en tant que mise à jour planifiée ne s’affichent plus sur une page de produit storefront après la date de fin de la mise à jour. GitHub-469
- L’application affiche désormais un message d’information précis lorsque vous cliquez sur Gérer les éléments sur la page Mon registre des cadeaux de compte et que les produits du registre sont en rupture de stock. Auparavant, l’application générait cette erreur :
Error: Call to a member function getId() …
. GitHub-490
- Vous pouvez maintenant ajouter une page CMS de la page Ajouter une nouvelle page à la hiérarchie racine du site Web, comme prévu.
- Le filtrage fonctionne désormais comme prévu sur la liste des exportations planifiées lorsque le type d’entité est sélectionné. Auparavant, le filtre ne fonctionnait pas et l’application générait une erreur JavaScript. GitHub-361
- Les images de catégorie sont désormais copiées comme prévu du répertoire
catalog/tmp/category
vers le répertoirecatalog/category
lorsque des catégories sont enregistrées à l’aide de la méthode de stockage de base de données. La ligne d’image de la tablemedia_storage_file_storage
contient désormais ledirectory_id
correct. GitHub-11995
- Les vendeurs sont désormais informés des caches invalidés comme prévu après l’envoi de modifications à la hiérarchie CMS. Auparavant, l’application n’invalidait pas les caches lors de l’enregistrement de la hiérarchie CMS.
- Les demandes d’AJAX redondantes à la section Panier du panier ont été réduites. Auparavant, l’application ne chargeait pas correctement le sous-total du panier, ce qui déclenchait à nouveau le rechargement du panier.
- Ajout de la validation des URL pour empêcher les mots réservés d’être inclus dans les clés d’URL. Voir Définition d’identifiants de ressource Uniform (URI) connus
- Lors des déploiements exécutant PHP 7.4, l’application renvoie désormais une erreur 404 lorsque le paramètre Générer une URL de catégorie/produit" réécrit est défini sur Non et qu’un acheteur tente d’accéder à un chemin de catégorie inexistant. Auparavant, l’application renvoyait une erreur 500 indiquant :
Trying to access array offset on value of type bool
. GitHub-31984
- Vous pouvez désormais modifier un produit créé à l’aide d’un jeu d’attributs à partir duquel les groupes Mise à jour de conception de groupe et de planification ont été supprimés. Auparavant, lorsque vous tentiez de modifier un produit créé à partir de ce jeu d’attributs, l’application générait une erreur fatale. GitHub-44
nowdoc
a remplacéheredoc
dans le sélecteur de magasinMagento_Backend
. GitHub-32262
- Les administrateurs sont désormais directement redirigés vers la page d’administration demandée après la connexion. Auparavant, lorsqu’un administrateur se connectait, il était redirigé vers le tableau de bord Admin (ou n’importe quelle page était configurée comme page de démarrage) et devait accéder manuellement à leur destination. GitHub-31042
- Ajout des régions de l’Argentine, de la Bolivie, du Chili, de l’Équateur, du Guyana, du Paraguay, du Pérou, du Suriname et du Venezuela à la table
directory_country_region
. GitHub-31169
- Ajout des régions Albanie, Danemark, Grèce, Islande, Portugal et Suède à la table
directory_country_region
. GitHub-31040
- Les messages sont désormais marqués comme erreurs dans la file d’attente des messages MysqlMQ lorsque des exceptions se produisent. GitHub-18140
- L’application fait désormais référence à l’objet de classe correct lors du chargement des informations fiscales pour la note de crédit de l’administrateur et les pages de facture. GitHub-31197
- L’intégration Royal Mail Click & Drop fonctionne désormais comme prévu. Auparavant, l’application générait cette erreur lorsque vous tentiez d’activer son intégration :
Sorry! Something went wrong. Please try again later
. GitHub-28996
- La demande affiche désormais un message d’erreur informatif lorsqu’un envoi, une note de crédit ou un identifiant de facture incorrect est transmis dans une URL. Auparavant, l’application entraînait une erreur fatale. GitHub-30424
- Suppression de la résurgence de l’emplacement des fichiers statiques. L’application affiche désormais une page 404 au lieu d’une erreur 500. Auparavant, un bogue dans la configuration par défaut de NGINX entraînait une récursion infinie. GitHub-31530
- Le nom du fichier
cms_index_noroute.xml
a été corrigé surcms_noroute_index.xml
. GitHub-31300
- Le fichier
.editorconfig
a été restructuré pour corriger le formatage automatique des fichiersdb_schema_whitelist.json
. GitHub-31171
- Le redimensionnement d’une fenêtre de navigateur ne déclenche plus d’événements de loupe de liaison en double. GitHub-30788
- L’application ne renvoie plus d’exception SQL lors du filtrage de
Magento\Users\Model\ResourceModel\Users\Collection
paruser_id
. GitHub-31216
Cartes cadeau
- Les frais de paiement en attente sont maintenant supprimés d’une carte-cadeau, comme prévu lorsqu’une carte-cadeau est annulée. Auparavant, l’application générait une erreur lorsqu’elle
cron
était exécutée après la suppression de la carte-cadeau.
- Les acheteurs peuvent désormais supprimer les cartes-cadeaux d’une commande sur la page Vérifier la commande lorsqu’ils passent à la caisse avec plusieurs adresses. Auparavant, l’application ne supprimait pas la carte-cadeau de la commande lorsque l’acheteur sélectionnait la carte, puis cliquait sur Supprimer.
- L’application affiche désormais le nouveau prix d’une carte-cadeau dans le panier lorsque vous modifiez la valeur de la carte-cadeau après l’avoir ajoutée au panier.
- La logique de validation de la plage de prix a été ajoutée à la page de création de la carte-cadeau. Auparavant, un administrateur pouvait créer une carte dont la valeur minimale dépassait la valeur maximale. GitHub-493
- La requête
addRequisitionListItemsToCart
renvoie désormais le montant d’une carte-cadeau personnalisée comme prévu lorsque la requête ne contient pas de valeur pourallow_open_amount
.
Message cadeau
- La mutation
setGiftOptionsOnCart
crée désormais correctement des messages-cadeaux. GitHub-388
Registre de cadeaux
- Les valeurs de date d’événement sont désormais identiques sur la vitrine et Admin lors de la création ou de la modification du registre de cadeaux. Auparavant, chaque fois que vous modifiez et enregistrez le registre des cadeaux, l’application ajustait la date de l’événement un jour en arrière sur le storefront et l’administrateur. GitHub-466
- L’application n’affiche plus les produits désactivés dans les registres de cadeaux. Auparavant, si un produit était désactivé après avoir été ajouté à un registre des cadeaux, l’application affichait ce message lorsqu’un acheteur accédait au registre :
Error: Call to a member function getId() …
. GitHub-510
Emballage cadeau
- La traduction des étiquettes d’emballage cadeau pour les vues en magasin fonctionne maintenant comme prévu.
- L’emballage cadeau est maintenant appliqué comme prévu aux commandes expédiées à plusieurs adresses.
- L’application supprime désormais les frais d’emballage cadeau du panier lorsque tous les produits ont été retirés.
- Les totaux des notes de crédit sont désormais corrects lorsque la note de crédit contient un emballage cadeau et des frais de produit configurables. Auparavant, le montant de la taxe sur l’emballage cadeau n’était pas toujours inclus dans le total de la note de crédit. GitHub-34
Google Analytics
- L’application ne renvoie plus d’erreur lorsqu’un administrateur tente de charger une page sur le storefront lorsque Google Analytics est activé. Une entrée CSP pour
connect-src
a été ajoutée pour autoriser les requêtes d’AJAX to www.google-analytics.com. GitHub-30880
Gestionnaire de balises de Google
- Le composant de l’interface utilisateur pour l’adresse de facturation sur la page de paiement du processus de passage en caisse utilise désormais correctement l’adresse de devis lorsque le Gestionnaire de balises de Google est activé. Auparavant, une erreur JavaScript se produisait sur la page de paiement.
GraphQL
- La requête GraphQL
products
renvoie désormais les options d’attribut triées dans le même ordre de tri que celui utilisé sur la page de modification des attributs.
- La réponse à la requête GraphQL
{ category(id: 2){ children { name children { name } } } }
comprend désormais une arborescence de catégories correctement triée.
- L’objet
CartItemPrices
contient désormais le nouveau champ GraphQLfixed_product_taxes
, qui renvoie un tableau des taxes fixes sur les produits appliquées à un article de panier. Auparavant, les taxes sur les produits fixes appliquées à un article de panier n’étaient pas incluses dans la requête de panier.
- Les requêtes vides envoyées à GraphQL renvoient désormais le code de réponse 200 au lieu de 500. Auparavant, l’analyseur GraphQL renvoyait une exception avant que le résultat de la requête ne soit généré.
- La mutation
applyRewardPointsToCart
met à jour le total général d'un panier pour refléter précisément la valeur des points de récompense déduits. GitHub-486
- Les produits désactivés ne sont plus inclus dans la réponse GraphQL lorsque GraphQL est utilisé pour lier des produits de mise à niveau.
- Les vendeurs peuvent désormais utiliser la méthode GraphQL
setShippingAddressesOnCart
pour définir les adresses de facturation et de livraison du panier d’un acheteur lorsque le passage en caisse des invités est désactivé.
- La requête
categoryList
ne renvoie plus d’exception lorsqu’elle contient plusieurs fragments sur l’objetCategoryTree
. GitHub-31086
- La requête GraphQL
product
renvoie désormais les prix corrects du groupe de clients.
- La réponse à la requête GraphQL
products
trie désormais les agrégations en fonction de la position de l’attribut produit.
- L’application ne renvoie plus d’erreurs de type lors des requêtes GraphQL lorsque les suffixes d’URL de produit et de catégorie contiennent des valeurs nulles. GitHub-30909
- L’objet
CustomizableDateValue
contient désormais l’attributtype
. Sa valeur est une énumération qui peut être définie sur DATE, DATE_TIME ou TIME.
- La
dynamicBlocks
requête renvoie le contenu des blocs dynamiques correspondant aux filtres spécifiés.
- La requête POST
V1/products/special-price-delete
supprime désormais uniquement le prix avec un spécifiéstore_id
comme prévu. Auparavant, l’appel supprimait tous les prix spéciaux pour le SKU spécifié de tous les magasins. GitHub-25907
- Correction d’une erreur avec l’attribut
country_code
dans lacreateGiftRegistry
mutation.
- Correction de problèmes liés à l’attribut
giftRegistryUid
de laupdateGiftRegistryItems
mutation.
- Ajout d’une vérification supplémentaire pour empêcher l’utilisation de la
updateGiftRegistryRegistrants
mutation pour ajouter des personnes inscrites au hasard à un registre de cadeaux.
- La
addConfigurableProductsToCart
mutation renvoie maintenant la vignette correcte du produit spécifié. Auparavant, elle renvoyait la vignette du produit parent.
- La requête
products
n’expose plus le prix spécial d’un produit lorsque la période de prix spécial est définie pour une date ultérieure. GitHub-30210, GitHub-29631
- La réponse de requête
customer
inclut désormais l’attributtotal_giftcard
dans le cadre de l’objetOrderTotal
.
- Correction d’un problème en raison duquel la requête
products
renvoyait des informations erronées sur les niveaux de prix sur les articles pour lesquels le niveau de prix n’est pas défini. GitHub-32279
Image
- Vous pouvez désormais définir les attributs required_options et has_options bundle comme prévu lors de la création ou de la mise à jour d’un produit bundle à l’aide du point de terminaison POST
/V1/product/:sku
. Auparavant, ces attributs personnalisés étaient définis sur 0 (zéro) malgré les efforts déployés pour le définir sur 1 (un).
Importer/exporter
- Le filtre Identifiants de catégorie pour les entités de produits dans la grille Attributs d’entité de la page Exportation fonctionne maintenant comme prévu.
- L’état des stocks de produits groupés est désormais mis à jour, comme prévu, en rupture de stock lorsque tous les produits enfants sont en rupture de stock. GitHub-32647
- L’état du stock de produits configurable est désormais automatiquement mis à jour comme prévu lorsque l’état du stock de produit enfant est mis à jour par importation. Auparavant, l’état des stocks de produits n’était pas automatiquement mis à jour lorsque l’état du stock de produits enfants était mis à jour par importation.
- Vous pouvez désormais enregistrer des valeurs vides dans une exportation planifiée. Auparavant, l’application mettait à jour les valeurs de filtre vides après la création ou l’enregistrement de l’exportation. Les valeurs
no
etnot specified
étaient représentées par zéro dans la base de données et une valeurnot selected
a été remplacée parno
.
- Le processus d’exportation prend désormais en compte la portée du rôle utilisateur lors de l’exportation de produits, de sources de stocks et d’entités clients. Auparavant, le processus d’exportation ignorait la portée du rôle utilisateur, ce qui permettait l’exportation des entités d’exportation de rôle utilisateur privé.
- L’application définit désormais la classe de taxe du produit sur
None
si un produit est importé avec lestax_class_name
valeursNone
ou0
. Auparavant, siproduct tax_class_name
étaitNone
dans le fichier CSV, l’application créait une nouvelle classeNone
de taxe , qui dupliquait la classe d’impôt existante. Siproduct tax_class_name
était0
dans le fichier CSV, l’application ignorait cette valeur et la classe de taxe du produit ne changeait pas après l’importation.
- Les administrateurs peuvent désormais modifier avec succès les
name
rapports d’un produit groupé à partir de l’administrateurbundle_values
. Auparavant, l’application affichait le produit comme étant en rupture de stock sur la vitrine après que vous ayez modifié le nom de l’administrateur. Les produits ont également été fusionnés avec le même SKU dans une seule section d’options groupées.
- L’application prend désormais en compte le périmètre utilisateur lors de l’exportation des données client. Auparavant, lorsque vous essayiez d’exporter des clients, l’application exportait les données client de tous les sites Web.
- L’application supprime désormais les relations de produit entre les ventes incitatives, les ventes croisées et les produits associés lors de l’importation du fichier CSV, comme prévu lorsque
__EMPTY__VALUE__
cela est spécifié dans le fichier CSV.
- L’exportation de données d’adresse personnalisée pour de nombreux clients (Admin Système > Exporter) n’entraîne plus systématiquement une erreur de mémoire. Auparavant, lors de l’exportation des données d’adresse personnalisée, l’application tentait de charger toutes les données du client, ce qui entraînait une insuffisance de mémoire, et l’application générait une erreur d’allocation-mémoire en échec.
- Les prix des niveaux en double ne sont plus importés pendant le processus d’importation CSV par défaut. Auparavant, la validation était manquante pour empêcher l’importation de prix de niveau en double. Lorsque des prix de niveau en double se produisaient, les marchands ne pouvaient pas enregistrer de produits. Les commerçants ont également vu cette erreur lorsqu’ils ont tenté de planifier un changement de produit :
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry…
.
- Toutes les images de produit sont désormais validées lors de l’importation. Auparavant, l’application ne validait que la première image lorsqu’un produit contenait plusieurs images. GitHub-28236
- Vous pouvez maintenant supprimer une région d’une adresse client, comme prévu lors de l’importation. Auparavant, la région affectée ne changeait pas lorsqu’une adresse client était importée avec une région vide.
- Les produits avec un contenu JSON ou HTML comme attributs de produit supplémentaires sont maintenant exportés correctement vers un fichier CSV. Auparavant, le fichier CSV contenait des chaînes de données chevauchées dans des champs incorrects.
Index
- Process Manager se ferme désormais avec une erreur lorsqu’un processus enfant échoue. Auparavant, Process Manager se quittait toujours correctement si le nombre de fonctions qui lui étaient transmises (par exemple, les dimensions de l’indexeur) était inférieur à la valeur de la variable d’environnement
MAGE_INDEXER_THREADS_COUNT
. GitHub-30964
- Les produits sont désormais disponibles comme prévu dans les résultats de recherche storefront lors de la liaison de produits à l’aide d’une requête
/V1/products/:sku/links
de PUT REST lorsque le mode indexeur est défini sur Mettre à jour sur l’enregistrement.
- L’indexeur de règle de prix catalogue fonctionne désormais comme prévu lorsque le mode indexeur est défini sur Mettre à jour à l’enregistrement . GitHub-370
- La suppression d’une catégorie désactivée qui n’inclut pas de produit n’a plus aucun effet sur la recherche catalogue et les tables d’index de catégorie plates. Auparavant, la suppression d’une catégorie inactive déclenchait un réindexation complète. GitHub-23297
- Les indexeurs personnalisés peuvent désormais utiliser différents noms de colonne d’entité pour les abonnements. Auparavant, le déclencheur de base de données utilisait le nom de colonne de l’indexeur défini en dernier sur Mettre à jour par planification plutôt que l’indexeur désigné. GitHub-21853
- L’application n’envoie plus de requêtes AJAX pour recharger les sections de données client (
Magento_Customer/js/section-config
) qui ne sont pas affectées par la requête. GitHub-31948
- Les indexeurs suivants ne sont plus invalidés une fois que vous avez ajouté, supprimé ou réorganisé des produits dans une catégorie :
catalog_category_product
etcatalogsearch_fulltext
(et leurs dépendants). Auparavant, ces suppressions involontaires déclenchaient une réindexation complète des sites. Une réindexation complète est désormais bloquée dans ces conditions lorsque le catalogue plat n’est pas activé.
Infrastructure
- La dépendance
pelago/emogrifier
a été mise à jour de la version 3.1.0 à la version 5.0.0. Cette mise à jour a entraîné l’introduction de modifications incompatibles à l’envers de la classeMagento\Email\Model\Template\Filter
. Le code modifié est exécuté lors du rendu des modèles d’email. Voir Référence BIC.
- Correction d’un problème avec
\Magento\CatalogInventory\Model\Indexer\Stock\CacheCleaner::getCategoryIdsByProductIds
qui empêchait l’enregistrement d’un nouveau produit.
- La bibliothèque TinyMCE v3 obsolète a été supprimée. Le module
Magento_Tinymce3Banner
et les tests MFTF liés à TinyMCE v3.x ont été supprimés d’Adobe Commerce.
- L’application ne renvoie plus d’erreur
Invalid header value detected
sur le formulaire Nous contacter lorsqu’un acheteur saisit une adresse électronique contenant des signes diacritiques français (tels que "é", "è"). L’application convertit désormais les lettres UTF-8 du nom d’utilisateur en codage ASCII. Auparavant, les lettres UTF-8 n’étaient pas converties en encodage ASCII dans la section unique de l’adresse électronique.
- L’application ne renvoie plus d’erreur fatale PHP lorsqu’un module externe est ajouté à une classe parent. GitHub-31291
- Mise à jour des fichiers README.md pour ces modules :
Magento_Msrp
,Magento_MsrpConfigurableProduct
,Magento_MsrpGroupedProduct
,Magento_Multishipping
,Magento_MysqlMq
. GitHub-32577
phpcpd
a été mis à jour vers la version 6.0.3 pour la compatibilité PHP 8.
ramsey/uuid
a été mis à jour pour des raisons de compatibilité avec PHP 8.0. GitHub-31777, GitHub-826
colinmollenhour/php-redis-session-abstract
a été mis à jour vers la version 1.4.4 pour la compatibilité PHP 8. GitHub-32709
- Correction d’une combinaison non valide d’onglets et d’espaces dans le fichier
phpstan.neon
. GitHub-31239
- Suppression de l’utilisation de la propriété obsolète
$_isScopePrivate
dans toute la base de code. GitHub-30506
- Les mises en page ne sont plus codées en dur dans
Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Chooser\Container
. Par conséquent, la fonctiongetPageLayouts()
renvoie désormais la liste réelle des mises en page déclarées par les différents modules, comme prévu. Auparavant, il renvoyait uniquement des mises en page codées en dur. GitHub-31168
- Le
composer.lock
fichier a été mis à jour vers la dernière version de la norme de codage. GitHub-31152
- Ajout d’une dépendance manquante sur le package
web-token/jwt-framework
aumagento/module-jwt-framework-adapter
. GitHub-32578
- Des écouteurs passifs ont été ajoutés à la bibliothèque
fotorama.js
pour améliorer le score des mesures phares. GitHub-31140
- Le fichier README.md du module Google Analytics a été mis à jour. GitHub-32616
- Process Manager gère désormais correctement les exceptions dans les processus marqués. Le processus principal se ferme maintenant et l’application n’affiche désormais un message d’erreur qu’une seule fois. En outre, les exceptions des processus dupliqués sont désormais gérées lorsqu’ils sont générés dans le processus principal. Auparavant, l’application consignait plusieurs échecs d’indexation et affichait plusieurs messages d’erreur. GitHub-30622
- L’application ne renvoie plus d’erreur lorsqu’un module externe est ajouté à une classe parent. (Le paramètre
optionsProvider
est désormais déclaré aprèsgetContentIdentities
dansAssest.php
.) Auparavant, l’application générait cette erreur :Error: Cannot instantiate interface Magento\Framework\Data\OptionSourceInterface
. GitHub-31291
- L’exécution de
Magento\Framework\Filesystem\Io\Ftp::ls()
sur un dossier vide renvoie désormais un tableau vide comme prévu. Auparavant, l’application lançait cette exception :Invalid argument supplied for foreach() in vendor/magento/framework/Filesystem/Io/Ftp.php…
. GitHub-31288
- La méthode
update
pour le rôle et les règles a été marquée comme obsolète dansapp/code/Magento/Authorization/Model/Role.php
. GitHub-30756
- La concaténation pour les paramètres de cookie SameSite a été corrigée. Auparavant, une concaténation incorrecte ajoutait le
lex
suffixe àvalue
,domain
et à d’autres paramètres. GitHub-26377, GitHub-32440
allure-framework/allure-phpunit
a été mis à niveau vers la version 1.3.1 dans toute la base de code. Auparavant, l’application affichait cette erreur :Warning: Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' (this will throw an Error in a future version of PHP) in /var/www/html/src/vendor/allure-framework/allure-phpunit/src/Yandex/Allure/Adapter/AllureAdapter.php:74.
GitHub-24635
- L’application affiche désormais des erreurs plus informatives lorsque des erreurs se produisent lors de l’exécution de commandes
bin/magento
en mode de production. Auparavant, l’application n’affichait aucun message d’erreur ou affichait des messages dépourvus d’informations. GitHub-32786
- L’objet PHP
ArrayIterator
a été mis à jour pour fonctionner comme prévu avec PHP 7.4. GitHub-32088
- L’application ne renvoie plus d’erreur lorsqu’un client tente de terminer une commande lorsqu’aucun opérateur de livraison n’est disponible. Il affiche plutôt la page de passage en caisse et ce message :
Sorry, no quotes are available for this order at this time
. Auparavant, l’application affichait une page de paiement vide et enregistrait ce message dans le journal des exceptions :array_keys() expects parameter 1 to be array, null given
. GitHub-30830
- L’application n’enregistre plus chaque cookie comme un contexte distinct. Le tableau
$_COOKIE
a également été converti en chaîne. Auparavant, chaque cookie étant enregistré comme un contexte distinct, lorsque le nombre de cookies dépassait 50, l’application enregistrait ce message :Unable to send the cookie. Maximum number of cookies would be exceeded
. GitHub-31334
Facture
- Lors de la création de nouvelles factures dans l’administration, la case à cocher Copie par courrier électronique de fonctionne désormais comme prévu. Auparavant, la case à cocher était ignorée si le paramètre global d’envoi d’e-mails de facturation était activé dans Courriers électroniques du service Ventes. Il est maintenant cohérent et fonctionne de la même manière que les pages d’expédition et de création de note de crédit. GitHub-28511
Galerie de médias
bin/magento media-gallery:sync
échoue désormais comme prévu lors du traitement des images PNG qui ne disposent pas d’informations XMP.
- Les entrées de la table
catalog_product_entity_media_gallery
sont supprimées comme prévu lorsque les produits associés sont supprimés. GitHub-17727
- Les détails des images peuvent désormais être mis à jour dans la galerie de médias lorsque la minification JavaScript est activée. Auparavant, les détails de l’image n’étaient pas enregistrés et l’application affichait cette erreur :
TypeError: Cannot read property 'call' of undefined in jquery.validate
. GitHub-31633
MFTF
Les nouvelles fonctionnalités et les correctifs de bogues de base MFTF sont décrits dans la Modification de la structure de test fonctionnel.
- Les commandes
magento indexer:reindex
etcache:flush
et le groupe d’actionsAdminReindexAndFlushCache
ont été supprimés des tests afin d’améliorer l’exécution des modules suivants :Bundle
,Catalog
,CatalogRule
,CatalogRuleConfigurable
,CatalogUrlRewrite
,Downloadable
,Indexer
,Paypal
etSales
. GitHub-31031
AdminSubmitCategoriesPopupActionGroup
a été ajouté aux tests pour empêcher l’échec du test. GitHub-31251
- Les tests ont été restructurés avec
StorefrontCheckQuickSearchStringActionGroup
etStorefrontAssertProductNameOnProductMainPageActionGroup
(groupes d’actions existants). GitHub-31251
Tests restructurés
Les tests suivants ont été restructurés afin d’améliorer le temps d’exécution :
AddOutOfStockProductToCompareListTest
AdminApplyTierPriceToProductWithPercentageDiscountTest
AdminCheckingCreditMemoTotalsTest
AdminCheckDashboardWithChartsTest
AdminConfigDefaultProductLayoutFromConfigurationSettingTest
AdminCreateInvoiceTest
AdminCreateOrderAddProductCheckboxTest
AdminMassOrdersCancelCompleteAndClosedTest
AdminMassOrdersCancelProcessingAndClosedTest
AdminMassOrdersHoldOnCompleteTest
AdminMassOrdersHoldOnPendingAndProcessingTest
(remplacement de AdminMassOrdersHoldOnPendingAndProcessingTest
obsolète)
AdminMassOrdersUpdateCancelPendingOrderTest
AdminMassProductPriceUpdateTest
AdminMassUpdateProductAttributesMissingRequiredFieldTest
AdminOrdersReleaseInUnholdStatusTest
AdminPanelIsFrozenIfStorefrontIsOpenedViaCustomerViewTest
AdminSortingByWebsitesTest
AdminUpdateSimpleProduct
AdminUpdateSimpleProductWithRegularPriceInStockEnabledFlatTest
AdminValidateShippingTrackingNumberTest
CancelOrdersInOrderSalesReportTest
ProductsQtyReturnAfterOrderCancelTest
StorefrontConfigurableProductBasicInfoTest
Groupes d’actions
Les actions répétitives ont été remplacées par des groupes d’actions dans les tests suivants :
AdminCheckConfigurableProductPriceWithDisabledChildProductTest
AdminConfigurableProductCreateTest
AdminConfigurableProductRemoveAnOptionTest
AdminCreateProductDuplicateUrlkeyTest
AdminCreateSimpleProductNegativePriceTest
AdminCreateSimpleProductZeroPriceTest
AdminCreateVirtualProductFillingRequiredFieldsOnlyTest
AdminUpdateSimpleProductWithRegularPriceInStockDisabledProductTest
AdminUpdateSimpleProductWithRegularPriceInStockNotVisibleIndividuallyTest
AdminUpdateSimpleProductWithRegularPriceInStockVisibleInCatalogOnlyTest
Nouveaux groupes d’action
AdminClearFiltersOnGridActionGroup
AdminClickAddNewPageOnPagesGridActionGroup
AdminClickInsertWidgetActionGroup
AdminClickRefundOfflineOnNewMemoPageActionGroup
AdminFillAccountInformationOnCreateOrderPageActionGroup
AdminGoToOrderStatusPageActionGroup
AdminOpenCMSPagesGridActionGroup
AdminSelectAttributeSetOnEditProductPageActionGroup
AssertAdminProductIsAssignedToCategoryActionGroup
(remplace le filtrage de la grille de produits par SKU et le clic sur la première ligne (afin de réduire le temps d’exécution des tests)
AssertLinkActionGroup
AssertStorefrontCartDiscountActionGroup
ClickPlaceOrderActionGroup
SaveCmsPageActionGroup
StorefrontAssertProductNameIsNotOnProductMainPageActionGroup
StorefrontGuestCheckoutProceedToPaymentStepActionGroup
StorefrontHoverProductOnCategoryPageActionGroup
StorefrontSelectCustomizeAndAddToTheCartButtonActionGroup
Groupes d’actions supprimés
- Suppression
CliIndexerReindexActionGroup
(ou modification de la valeur) des tests afin d’améliorer leBackend
temps d’exécution des modules , ,Elasticsearch
Swatches
Indexer
LayeredNavigation
Elasticsearch6
Downloadable
LoginAsCustomer
Search
SalesRule
Store
Sales
UrlRewrite
Weee
BundleImportExport
CatalogRule
Wishlist
Catalog
CatalogSearch
Checkout
Newsletter
Bundle
- Supprimé
CliCacheFlushActionGroup
deCatalog
,CatalogUrlRewrite
,Checkout
,Config
ConfigurableProduct
,Sales
Contact
Cookie
Translation
Elasticsearch6
Elasticsearch
Downloadable
Customer
Fedex
Indexer
LayeredNavigation
Msrp
LoginAsCustomer
Swatches
Multishipping
CurrencySymbol
,UrlRewrite
,Vault
Weee
, , , ,Wishlist
Bulletin
- L’application n’envoie plus d’e-mail de newsletter à un client qui s’est désabonné de la newsletter dans la période comprise entre la création de la file d’attente de la newsletter et l’envoi de la newsletter. GitHub-32116
- L’application honore désormais les paramètres d’activation de la newsletter (Magasins > Paramètres > Configuration > Clients > Newsletter > Options générales). Auparavant, ces paramètres étaient toujours récupérés de la portée par défaut dans les déploiements multi-magasin. GitHub-31188
- Le GET d’appel REST
/V1/customers/search
renvoie désormais les informations correctes pour les clients abonnés à plusieurs newsletters. GitHub-31168
- Le statut de l’abonnement à la mise en cache a été supprimé du module externe newsletter. GitHub-19345
Commande
- L’application calcule désormais correctement un solde client facturé lors du retour de crédit en magasin sur un compte client pour une commande partiellement facturée.
- L’application enregistre désormais une commande modifiée comme prévu lorsqu’elle enregistre un solde client remboursé. GitHub-393
Modes de paiement
- L’application affiche désormais les blocs
frontend
de paiement, quelle que soit la zone à partir de laquelle l’e-mail a été envoyé. (La zone actuelle est maintenant émulée commefrontend
avant le rendu du bloc de paiement.) Auparavant, les blocs de paiement étaient rendus dans la zone d’où l’e-mail était envoyé. Par conséquent, que le message électronique du service commercial ait été déclenché à partir de l’administrateur ou par l’API REST, les URL des ressources ont tenté de les charger à partir d’une zone incorrecte (webapi_rest
ouadminhtml
).
- L’application envoie maintenant le lien d’un produit téléchargeable à l’adresse e-mail spécifiée lors du paiement. Auparavant, lorsqu’un client invité utilisait PayPal paiement express et entrait différentes adresses e-mail pour soumettre la commande et passer à la caisse, l’application envoyait le lien du produit téléchargeable à la première adresse.
- L’application affiche désormais une valeur exacte pour le crédit de magasin disponible sur la page Mode de paiement dans les déploiements qui prennent en charge plusieurs devises.
- La liste des méthodes de paiement est désormais mise à jour comme prévu lorsqu’un acheteur invité modifie l’adresse d’expédition d’une commande vers un autre pays lors du passage en caisse. Auparavant, la modification de l’adresse de facturation ne déclenchait pas de mise à jour des modes de paiement possibles.
PayPal
- Les acheteurs peuvent désormais extraire avec succès une commande PayPal Payflow Pro avec une adresse de livraison contenant des caractères spéciaux. Auparavant, la demande refusait le paiement de ces commandes.
- Les acheteurs sont désormais redirigés vers la page de succès de la commande après un paiement réussi à l’aide de PayPal. Auparavant, les clients étaient redirigés vers une page vierge, car les données de session étaient perdues.
Performances
- Les performances de la recherche de SKU Admin sur les catalogues volumineux ont été améliorées. Les conseils de l’optimiseur de requêtes imposent désormais l’utilisation de l’index lors de l’exécution de la requête.
- Les performances du processus lors de l’exécution
catalog_product_alert
cron
sur des tables volumineuses (plusieurs millions de lignes) ont été améliorées. Auparavant, toutescatalog_product_alert
les alertes de produit étaient chargées, ce qui entraînait une exception de mémoire insuffisante.
- L’application ne charge plus toutes les pages CMS lorsqu’elle n’a besoin que d’une seule page d’édition pour rendre un formulaire d’administration. Ces pages se chargent désormais plus rapidement. GitHub-30936
-
Les valeurs numériques dans les expressions
WHERE IN
sont désormais portées en tant que nombre, et non en tant que chaîne, ce qui améliore les performances des requêtes dans certaines versions de MariaDB. GitHub-31135 -
Le mode
use_application_lock
vous permet d’activer la réindexation à l’aide de variables d’environnement ou en configurant le fichierapp/etc/env.php
. Vous n’avez plus besoin de réinitialiser manuellement l’indexeur après un échec lorsque ce mode est activé. Lorsque ce mode n’est pas activé, vous devez réinitialiser manuellement l’indexeur après un échec. Voir Utilisation du mode de verrouillage de l’application pour les processus de réindexation.
Prisée
- L’application met désormais correctement à jour le prix d’un produit avec des prix groupés lorsqu’un acheteur met à jour la quantité de produit sur la vitrine. GitHub-32669
- Les produits groupés peuvent désormais être enregistrés lorsqu’un prix de niveau a été attribué aux produits et
Magento\Framework\Api\ExtensibleDataObjectConverter
sont utilisés pour convertir les données des produits. Auparavant, lorsqueMagento\Framework\Api\ExtensibleDataObjectConverter
était utilisé pour convertir les données de produit en tableau lorsqu’un produit était enregistré, l’application n’enregistrait pas le produit et affichait cette erreur :Notice: Undefined index: price in app/code/Magento/Catalog/Model/Product/Type/Price.php on line 382.
- Les mises à jour de prix planifiées sont désormais appliquées aux produits déjà présents dans le panier d’un acheteur. GitHub-356
- Le prix de niveau est désormais appliqué à un produit comme prévu lorsque des incréments de quantité sont activés et que l’inventaire décimal est inférieur à 1. Auparavant, la quantité minimale de prix était définie sur 1.
Vidéo produit
- Vous pouvez maintenant utiliser le bouton Ajouter une vidéo (Catalogue d’administration> produits) pour ajouter consécutivement plusieurs vidéos. Auparavant, les champs vidéo conservaient les détails de la vidéo précédente.
- Le passage en mode plein écran pour une vidéo de produit sur une page de produit fonctionne désormais comme prévu sur les appareils mobiles. Auparavant, le passage en mode plein écran entraînait la pause de la vidéo avant de quitter le mode plein écran.
- Les boutons fléchés de navigation (Suivant et Précédent) sont désormais visibles comme prévu sur les vidéos de produit storefront.
- Les vendeurs peuvent désormais ajouter des vidéos Vimeo à l’aide du bouton Insérer une vidéo sur la page du produit, comme prévu. Auparavant, l’application affichait une erreur 404. GitHub-31753
Citation
- L’appel
/V1/guest-carts/examplecartid/items
renvoie maintenant l’affichage de magasin demandé. Auparavant, elle renvoyait la première vue de magasin dans le magasin, et non celle demandée.
- L’envoi des factures est maintenant configurable. Auparavant, l’envoi de factures n’était pas configurable et l’application envoyait toujours une facture après sa création. Les e-mails de facturation et de commande ont tous deux été envoyés dans le cadre d’un seul observateur. Des observateurs distincts régissent désormais l’envoi de l’e-mail de commande et de l’e-mail de facturation. GitHub-27656
Rapports
- Tous les rapports système peuvent désormais être visualisés et téléchargés à partir du projet Adobe Commerce sur l’infrastructure cloud. Auparavant, vous ne pouviez pas télécharger de rapports système pour les journaux, les données, la conception ou les magasins.
- La date de la dernière révision sur les rapports > les révisions de l’administrateur> sous-produits affiche désormais la date de révision correcte. Auparavant, l’application affichait la date de création du produit au lieu de la date de révision.
Autorisations de retour de marchandise (RMA)
- L’attribut RMA
resolution
n’est plus affiché comme requis lorsque la valeur du champ d’attributrequired
est définie sur no.
- Vous pouvez désormais sélectionner plusieurs commandes à renvoyer depuis l’administrateur. Auparavant, l’application entraînait une erreur lorsque vous cliquiez sur Envoyer après avoir sélectionné plusieurs retours et sélectionné Fermeture dans le menu déroulant Actions.
- L’application envoie désormais aux clients un courrier électronique de notification, comme prévu, après avoir modifié l’état d’un retour à l’aide de l’API REST.
- L’application filtre désormais les enregistrements en fonction des valeurs de filtre dans la grille de retours du client administrateur. Auparavant, l’application vous dirigeait vers la page Admin Tous les clients et cliquait sur le bouton Réinitialiser le filtre était également redirigé vers cette page. GitHub-436
Révisions
- Les étoiles d’évaluation de la révision des produits sont désormais correctement calculées dans la section Détails de la révision de la page Mon compte.
- Les sections Évaluation moyenne du produit et Évaluations des produits de la page de détails des avis sur les produits s’affichent désormais correctement. Auparavant, l’ID de révision n’était pas défini lorsque l’application calculait l’évaluation de la vitrine et le modèle d’avis de produit n’était pas correctement rendu.
- Le lien Soyez le premier à examiner ce produit passe maintenant, comme prévu, à un nombre d’avis après qu’un administrateur a approuvé un avis.
- Les administrateurs peuvent désormais trier les avis sur les produits dans la section Avis sur les produits de la page de modification du produit, comme prévu. GitHub-30270
- Les révisions sont désormais enregistrées avec l’ID de magasin correct une fois qu’un administrateur a approuvé et enregistré la révision à partir d’un domaine différent de celui du magasin. GitHub-17510
Références
- Les vendeurs peuvent désormais annuler une commande qui a été passée entièrement ou partiellement à l’aide de points de récompense après que le client qui a passé la commande a été retiré du système.
- Les vendeurs peuvent désormais supprimer les points de récompense des règles de prix du panier. Auparavant, lorsqu’un commerçant tentait de définir les points de récompense sur 0 lors de la création d’une règle de prix de panier, la valeur précédente pour la quantité de point de récompense persistait.
- Les points de récompense pour les révisions de produits sont désormais associés au site web approprié lorsque plusieurs révisions sont approuvées à partir de la grille Admin Marketing > En attente d’révisions. Auparavant, les points de récompense n’étaient pas affichés sur le storefront et n’étaient pas liés au site web approprié dans l’administrateur.
- L’application met à jour la liste des méthodes de paiement lorsqu’un acheteur passe en caisse avec plusieurs adresses coche ou décoche l’option Crédit de boutique (points de récompense) .
Ventes
- Les utilisateurs administrateurs peuvent désormais passer des commandes pour des éléments en rupture de stock lorsque le paramètre Les commandes en arrière-plan sont autorisées est activé (Magasins > Configuration > Catalogue > Inventaire > Options d’inventaire des produits). Auparavant, l’application entraînait une erreur.
- Les acheteurs peuvent désormais trouver une commande sur la page Commandes et retours lorsque le nom se termine par un espace blanc.
- Les factures sont désormais créées avec le total général correct lorsqu’une règle de prix de panier attribuant une remise de 100 % est appliquée à une commande qui est également soumise à des taxes de catalogue et de réduction et qui est admissible à la livraison gratuite. Auparavant, la commande avait le prix correct, mais pas la facture. GitHub-30853
- Le filtrage des commandes par date renvoie désormais des résultats précis. Auparavant, l’application ne renvoyait pas une commande passée après 00h00 UTC lorsque vous filtiez les commandes par date de commande.
- La grille de note de crédit affiche désormais le symbole de devise correct lorsque l’étendue du site Web est utilisée pour un attribut Price dans un déploiement multi-magasins.
- Les boutons radio des modes de paiement ne disparaissent plus dans la section Informations sur le paiement et l’expédition du processus de paiement après le rechargement de la page Admin Créer une nouvelle commande. GitHub-32106
- Le texte arabe s’affiche désormais correctement sur les factures.
- La demande calcule désormais correctement les totaux de taxe sur les avoirs partiels pour les avoirs bloqués sur la base d’une commande ou d’une facture dans les magasins qui déploient PayPal payment Pro comme passerelle de paiement. Auparavant, pour les commandes comportant plusieurs factures, l’application appliquait la taxe totale de cette commande pour l’annulation partielle d’une facture dans l’avoir.
- L’application ne crée plus de blocages aléatoires de base de données lors de l’envoi de nouveaux emails de commande aux clients. Auparavant, des blocages se produisaient, car l’application enregistrait l’intégralité de l’objet et ses objets associés au lieu de colonnes SQL mises à jour. L'application a affiché ce type d'erreur :
SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction
. GitHub-31090
- La page Détails de la commande du storefront affiche désormais la quantité de produit expédiée correcte. Auparavant, les quantités de produits étaient incorrectes, car le modèle de la page d’envoi de commande affichait Qté expédiée comme
int
. Cela a été remplacé parfloat
.
- L’application n’envoie plus de copies par courrier électronique d’une facture de commande lorsque le bouton Copie par courrier électronique de la facture n’est pas coché. Auparavant, l’application s’envoyait par courrier électronique au client et envoyait une copie de l’e-mail de facturation à . GitHub-28511
- L’application ne crée plus d’entrées d’adresses en double pour un compte client lors de la création d’une nouvelle commande auprès de l’administrateur pour un client existant. La case à cocher Enregistrer dans le carnet d’adresses a été renommée Ajouter au carnet d’adresses et est maintenant désactivée dans l’administrateur par défaut.
- L’application utilise désormais le logo qui a été téléchargé dans les paramètres Logo pour HTML Print View lorsque les acheteurs impriment une commande à partir de leur compte. Auparavant, l’application affichait le logo LUMA à la place du logo téléchargé.
- Le téléavertisseur des éléments de commande sur le storefront fonctionne désormais comme prévu lorsque le nombre d’éléments dépasse 20. Auparavant, le téléavertisseur prenait en compte les produits enfants et le nombre total était incorrect.
- L’application affiche désormais les symboles de devise appropriés pour le sous-total et l’expédition et la gestion des valeurs sur les grilles de page Commande et Mémo de crédit. GitHub-22662
- Les administrateurs qui utilisent Safari peuvent désormais ajouter un produit à une commande à partir de l’administrateur. Auparavant, lorsque l’administrateur cliquait sur le bouton Ajouter les produits sélectionnés à commander , l’application affichait l’icône de chargement en rotation et la page bloquée. GitHub-30265
Règle de vente
- L’application applique désormais les règles de prix du panier avec les conditions Maximum Qty Discount" (réduction maximale sur la qualité) est appliquée à ou conditions de qualité de remise (achat X) correctement lorsque plusieurs règles de prix du panier sont appliquées au panier. Auparavant, si une règle de prix de panier avec Remise maximale sur la qualité est appliquée à ou Étape de prix de remise (Buy X) était appliquée après une autre règle de prix de panier, la remise totale était réduite à la valeur configurée pour Remise maximale sur la qualité est appliquée à ou Étape de prix de remise (Buy X) fois le prix du produit.
- Le rapport Coupon reflète désormais fidèlement l’activité des coupons dans les déploiements où une base de données partagée est implémentée.
- Les règles de prix du panier qui contiennent la condition Catégorie IS NOT sont désormais appliquées comme prévu aux produits enfants/simples configurables qui ne sont pas affectés à une catégorie mais dont les produits parents sont affectés.
- La requête GraphQL
cart
renvoie désormais le total général correct pour l’étape de facturation d’un panier lorsqu’un coupon est appliqué à la commande.
Rechercher search-heading
- La page de catégorie ne contient plus ces ID d’élément d’HTML en double :
modes-label
,mode-list
,toolbar-amount
,sorter
,limiter
.
- Les résultats de recherche par mots partiels n’incluent plus de correspondances inattendues ou non pertinentes, et les recherches produisent des résultats cohérents à la fois sur le storefront et sur l’administrateur. L’application utilise désormais un autre analyseur sans aucun filtre pour les recherches de mots partielles. Auparavant, les résultats de recherche affichaient des produits qui n’incluaient pas de mots-clés de recherche. (L’analyseur par défaut incluait auparavant un moteur de recherche, et comme le même analyseur était utilisé au moment de la recherche pour une recherche par mot partielle, le résultat de la recherche pouvait produire des correspondances inattendues ou non pertinentes.)
- La recherche rapide renvoie désormais des résultats si la requête de recherche comporte plusieurs mots et que le nom du produit est configuré comme non consultable. Auparavant, si le nom de produit était configuré comme non consultable, l’application générait une exception de requête sur les requêtes de recherche comportant plusieurs mots.
- Search résultats incluent maintenant l’attribut
weight
comme prévu lorsqu’il est configuré comme pouvant faire l’objet d’une recherche.
- L’application ne renvoie plus d’erreur lorsque vous affichez une page de catégorie vide avec Elasticsearch activé. Au lieu de cela, il effectue le rendu de la page comme prévu et affiche un message informatif. Auparavant, un index de texte intégral vide déclenchait une exception sur une page de catégorie.
- La fonctionnalité de saisie semi-automatique du champ de recherche fonctionne désormais comme prévu si un acheteur clique en dehors du champ de recherche après avoir commencé sa recherche. Les suggestions de saisie semi-automatique réapparaissent lorsque l’acheteur reprend la saisie. Auparavant, l’application n’affichait pas de suggestions de saisie semi-automatique et le fait de cliquer dans la zone de recherche ne rendait pas les suggestions de recherche visibles à nouveau (bien que la saisie de lettres supplémentaires le fasse).
- La recherche d’un produit en fonction de son SKU complet ou partiel dans Advanced Search renvoie désormais le produit attendu.
- Les filtres de navigation superposés affichent désormais un nombre exact de produits. Auparavant, les valeurs de nombre de produits des Elasticsearch n’étaient pas filtrées par les autorisations du catalogue.
- Elasticsearch ne renvoie plus d’erreur lorsque le paramètre de page de l’URL de catégorie dépasse la pagination. GitHub-23843
- Vous pouvez maintenant ajouter un mappeur de champs Elasticsearch personnalisé à
Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver
. GitHub-24350
- Les développeurs peuvent désormais modifier les mappages Elasticsearch. Auparavant, les modèles dynamiques envoyés au serveur Elasticsearch dans les mappages par défaut étaient codés en dur, ce qui empêchait les développeurs d’indexer en Elasticsearch toutes les données supplémentaires associées à un module personnalisé. GitHub-24363
- Les champs de recherche (minisearch de formulaire) fonctionnent désormais comme prévu lorsque les suggestions de recherche sont désactivées. GitHub-30584
Livraison
- L’application met désormais à jour le prix d’expédition comme prévu lorsqu’un acheteur revient à la page du panier après avoir supprimé un produit lors du paiement avec plusieurs adresses.
- L’application affiche désormais le prix d’expédition ajusté correct lorsque certains articles du panier sont admissibles à la livraison gratuite. Auparavant, lorsqu’un sous-ensemble d’articles dans le panier était admissible à la livraison gratuite, l’application n’ajustait pas le prix d’expédition et affichait le prix d’expédition complet à l’acheteur.
- Les administrateurs qui sont limités à un site Web spécifique peuvent désormais créer un envoi pour une commande passée sur le même site Web. Auparavant, l’application générait cette exception lorsqu’un administrateur qui n’avait pas l’autorisation d’accéder à la vue de magasin par défaut tentait d’expédier une commande passée dans une vue de magasin à laquelle l’administrateur avait accès :
Notice: Undefined offset: 1 in /app/code/Magento/Catalog/Model/Product/Attribute/Backend/GroupPrice/AbstractGroupPrice.php on line 293
.
- L’application prend désormais en compte les remises pertinentes sur les règles de prix du panier pour déterminer si une commande remplit les conditions d’expédition DHL gratuite.
- Les étiquettes d’expédition utilisent désormais la devise de base comme prévu au lieu de la devise de commande pour les magasins qui prennent en charge plusieurs devises lorsqu’une commande est passée dans une devise non de base. GitHub-31891
- L’application affiche désormais le sous-total de commande correct lorsqu’un acheteur revient sur la page du panier au cours de l’extraction après s’être éloigné de la page à expédition multiple. GitHub-31889
- La modification des informations de facturation lors de la création d’une commande par l’administrateur ne modifie plus les informations d’expédition pour les clients dont les adresses de livraison et de facturation par défaut sont différentes. GitHub-31786
- L’application ne décoche plus la case Ajouter les commentaires lorsqu’un acheteur clique sur Obtenir les méthodes et les tarifs d’expédition et sélectionne une méthode d’expédition lors de la création d’une commande à partir de l’administrateur. GitHub-30256
- Les acheteurs peuvent désormais utiliser le bouton Retour du navigateur pour revenir à la page Sélectionner la méthode d’expédition lors de l’extraction d’une commande avec plusieurs adresses. Auparavant, l’application affichait une page Choix de la méthode d’expédition corrompue. GitHub-30268
- La quantité de produits reste inchangée comme prévu après qu’un acheteur modifie la quantité sur la page Envoyer à plusieurs adresses et clique sur le bouton Précédent du navigateur. GitHub-31956
- Les frais d’expédition forfaitaires ne deviennent plus nuls lorsqu’une règle de prix de panier est appliquée lors du paiement. GitHub-21832
- L’application ne renvoie plus d’erreur lorsqu’un marchand tente d’expédier une commande à l’aide de DHL lorsque la case à cocher Créer une étiquette d’expédition est activée et que le nom du produit contient des caractères unicode. Auparavant, l’application affichait cette erreur lors de la demande de création de libellé :
The response is in wrong format
. GitHub-31032
- Vous pouvez passer une commande à partir de l’administrateur dans un déploiement multi-site dans lequel
United States
est activé sur un site web etDisable all countries
est activé comme étendue par défaut sur l’autre site web. Auparavant, l’application n’avait pas passé la commande et affichait cette erreur :Please check the shipping address information. "regionId" is required. Enter and try again
. GitHub-30577
Mise en scène
- La fonctionnalité de mise à jour du bloc de planification fonctionne désormais comme prévu dans les déploiements implémentant Fastly. Auparavant, l’application ne mettait pas à jour le contenu du bloc, car les balises de mise en cache rapide n’étaient pas invalidées et continuait à diffuser du contenu obsolète.
- L’aperçu intermédiaire de la règle de prix du panier est désormais chargé sur le site Web approprié lorsqu’il est affecté à plusieurs affichages de magasin de sites Web. Auparavant, l’aperçu intermédiaire de la règle de prix du panier était chargé dans la vue de magasin par défaut, indépendamment des sites web attribués.
- Les prix spéciaux des produits dans la vue de magasin autre que celle par défaut sont désormais définis sur la valeur par défaut comme prévu après la fin d’une mise à jour planifiée.
- Les marchands peuvent désormais enregistrer avec succès un produit téléchargeable avec un exemple lié à partir de la page du produit téléchargeable après avoir créé une future mise à jour de l’intermédiaire avec une date de fin. Auparavant, l’application n’enregistrait pas le produit et affichait ce message :
The downloadable sample isn't related to the product. Verify the link and try again
. GitHub-488
- L’application n’exécute plus de requêtes de base de données volumineuses qui incluent tous les ID de produit lors de l’aperçu d’une mise à jour planifiée d’une catégorie. Au lieu de cela, le filtre de catégorie est appliqué à la collection de produits pour créer un tableau temporaire pour les aperçus intermédiaires de la catégorie. Auparavant, l’application inscrivait tous les produits dans une table temporaire pour l’aperçu intermédiaire, ce qui dégradait les performances.
- Le
Magento_SalesRuleStaging
module ne déclenche plus d’erreurs lors de la mise à niveau à partir de la version 2.3.x.
- L’application affiche désormais les conditions des règles de catalogue avec les données correctes lorsque vous affichez une mise à jour de planning. Auparavant, si vous visualisiez une mise à jour de planning créée avec des conditions, l’application n’affichait pas de conditions ou de conditions d’affichage avec des données incorrectes.
- La case à cocher Utiliser la valeur par défaut pour un produit reste cochée après la désélection d’une mise à jour planifiée avant la mise à jour.
- Les règles de prix du catalogue s’appliquent désormais comme prévu aux produits avec des valeurs d’attribut non définies. Auparavant, les remises créées par le biais d’une règle de prix de catalogue n’étaient pas appliquées aux produits avec des attributs non définis. GitHub-461
- Les règles du catalogue fonctionnent désormais comme prévu dans les déploiements de sites web multiples avec des magasins dans différents fuseaux horaires. Auparavant, l’application appliquait ou désactivait simultanément des règles de catalogue sur tous les sites web.
- Les prix des niveaux ne sont plus supprimés lorsqu’une mise à jour de planification est créée pour un site Web spécifique.
- Vous pouvez désormais enregistrer un produit à partir de la page Produit téléchargeable après avoir créé une future mise à jour intermédiaire avec une date de fin. Auparavant, l’application n’enregistrait pas le produit et affichait ce message :
The downloadable link isn't related to the product. Verify the link and try again
. GitHub-474
Magasin
- L’application ne traite plus une chaîne de
0
comme une valeur vide lors de l’affichage d’une page d’accueil de magasin. Auparavant, l’application traitait une valeur entière au début d’un chemin de requête comme identifiant de magasin, ce qui avait des effets inattendus sur l’optimisation pour les moteurs de recherche.
- Les modules externes pour
\Magento\Framework\App\ActionInterface
souslib/internal/Magento/Framework/App/Action/Plugin
ont été supprimés pour respecter la directive selon laquelle les modules externes doivent être utilisés pour personnaliser le comportement d’un module à partir d’un autre module. GitHub-28050
- L’application affiche désormais ce message lorsque vous essayez de sélectionner
Website
comme valeur par défaut lorsqueStore View
est désactivé lors de la création du site web :Please enable your Store View before using this Web Site as Default
. Auparavant, le site web se bloquait et l’application n’affichait pas d’alerte.
Taxe
- L’application prend désormais en compte la taxe cachée lors de la validation du montant minimum de la commande.
- L’application affiche désormais les taxes fixes sur les produits (FPT) comme prévu lorsqu’un acheteur revient dans son panier et passe en caisse après avoir ajouté des produits en bundle au panier. GitHub-30250
- L’application pré-remplit désormais les champs de saisie Numéro de TVA pour les adresses de facturation et de livraison de la section Informations sur l’adresse de la nouvelle page Admin de commande avec des numéros de TVA enregistrés lorsqu’un administrateur crée une commande pour un client existant. GitHub-31846
- L’application affiche désormais un champ Numéro de TVA sur la page d’enregistrement des clients lorsque
customer/create_account/vat_frontend_visibility
est activé. GitHub-31326
Test
- Les environnements de test ont été mis à niveau vers Redis 6.0.12.
- Suppression de
CacheCleaner::cleanAll();
des tests d’intégration. GitHub-31074
- Ajout d’un test pour ce scénario : les utilisateurs administrateurs peuvent modifier un compte client lorsque le client est abonné à une newsletter mise en file d’attente. GitHub-30645
- Suppression de la commande
cache:flush
des tests afin d’améliorer le temps d’exécution des modulesCatalog
,CatalogUrlRewrite
etLoginAsCustomer
. GitHub-31056
- Les paramètres redondants ont été supprimés et le POST remplacé par GET là où nécessaire dans
\Magento\Logging\Model\ProcessorTest::testLoggingProcessorLogsActionShipping
.
Thème
- La page de connexion du client n’affiche plus ce message lorsque le paramètre Déplacer le code JS au bas de la page (Magasin > Configurations > Avance > Développeur > Paramètres JavaScript) et que les cookies sont activés tous les deux :
The store will not work correctly in the case when cookies are disabled
.
- Les liens de compte dans les en-têtes suivent désormais les normes WCAG. Auparavant, les liens de compte dans les en-têtes contenaient des ID dupliqués, ce qui provoquait l’échec de la validation WCAG.
- L’application donne désormais la priorité à la configuration du magasin pour une image de logo plutôt qu’à la configuration de la mise en page. Auparavant, la taille des images du logo était fixe et ne variait pas en fonction du magasin.
- L’application affiche désormais les éléments de page de manière cohérente sur les pages de vitrine qui utilisent des thèmes Adobe Commerce standard. Auparavant, tous les styles n’étaient pas appliqués dans le thème Blank, de sorte que tous les éléments de page n’étaient pas affichés dans les pages utilisant ce thème. (Par exemple, aucune icône de loupe n’était présente dans le champ de recherche de la page Mes commandes.)
Traduction et paramètres régionaux
- Les crochets ajoutés aux chaînes ne sont plus échappés lorsque la traduction en ligne est configurée. Auparavant, la méthode convertissait
escapeHtmlAttr
les crochets en codes d’entité HTML. GitHub-32000
- Les phrases intraduisibles dans l’administrateur sont maintenant traduisibles. (Cette requête de tirage contribue aux efforts en cours pour rendre toutes les chaînes d’administration localisables.) GitHub-11175
- Les chaînes de texte du modèle utilisées pour gérer les modes de paiement stockés (Mon compte > Modes de paiement stockés) sont désormais traduisibles. GitHub-31211
- Les e-mails de commande envoyés par l’administrateur utilisent maintenant les paramètres régionaux du magasin et non les paramètres régionaux associés au compte de l’administrateur. GitHub-26521
Interface utilisateur
- Le pied de page Admin affiche désormais la version correcte du produit.
- La pagination des sources est désormais présente comme prévu lors de la création de l’envoi par l’administrateur.
- Le filtre de grille de produit fonctionne désormais correctement lorsque vous utilisez des attributs de date personnalisés pour filtrer les produits et que le paramètre régional de l’utilisateur administrateur est
en_GB
.
- Les mouvements de pincement/zoom fonctionnent désormais comme prévu dans la loupe de galerie d’images de la page de produits sur les appareils iOS.
- La pagination des résultats de recherche de la grille de produits Admin commence maintenant à la page un pour chaque recherche, comme prévu.
- Les anomalies de l’affichage du panier lors d’un zoom ont été résolues. Auparavant, les éléments d’affichage se chevauchaient lorsque l’on zoomait sur cette page.
- Les problèmes d’alignement avec les onglets de la page d’invitation de l’administrateur (Marketing administratif > Ventes privées > Invitations) ont été résolus. Auparavant, l’affichage de l’onglet pour les invitations acceptées par un client était mal aligné. GitHub-333
- La page de révision des commandes affichée lors du paiement avec PayPal Paiement express se charge désormais correctement. Auparavant, le modèle contenait le bouton de mise à jour de la méthode de livraison inutilisé, qui n’était que partiellement masqué par le script pendant le rendu de la page. GitHub-32006
- Les étoiles d’évaluation et le texte des avis dans la section Avis des clients de la page du produit sont désormais correctement espacés lorsque de longs noms d’évaluation sont présents. GitHub-31890
- Les options sont maintenant affichées comme prévu dans la liste déroulante Actions sur les pages Archiver les factures, les expéditions et les mémos de crédit.
- L’application affiche désormais une valeur de temps correcte lorsque l’option
datetime
de composanttimeOnly
est définie sur yes. GitHub-23157
- Vous pouvez désormais supprimer une mise à jour de la mise en page après avoir créé un widget sur le contenu d’administration> les widgets. GitHub-29936
- Le bouton Supprimer la mise à jour de la mise en page fonctionne désormais comme prévu sur toute mise en page que vous avez ajoutée depuis l’Admin Contenu > Widgets. Auparavant, ce bouton ne fonctionnait sur aucune autre mise en page que la première mise en page sélectionnée lors de l’ajout de plusieurs mises en page. GitHub-30286
- L’application utilise désormais le titre de page défini dans le fichier de mise en page comme titre de page du navigateur pour le fichier de modification du compte client. Auparavant, l’action de contrôleur
Magento\Customer\Controller\Account\Edit
appliquait la valeur de titre de page àAccount Information
. GitHub-30724
-
Les cases à cocher qui permettent aux marchands de basculer entre l’affichage et le masquage des mots de passe ont été ajoutées aux pages suivantes :
- Accès client
- Enregistrement de client
- Modification du client (section Modifier le mot de passe )
- Nouveau mot de passe défini par le client GitHub-31557
- Suppression d’un en-tête redondant dans les cellules de grille qui s’affichait lorsqu’un administrateur ajoutait un produit à un ensemble groupé de produits après avoir modifié le jeu d’attributs. GitHub-30911
- L’application affiche désormais un filtre
DateRange
dans la zone Connecté de la page Client > Connexion . Auparavant, l’application affichait unText
filtre. GitHub-30328
- JavaScript a été supprimé des fichiers de modèle et déplacé dans des fichiers distincts afin de réduire les problèmes de rendu sur les pages d’administration. Auparavant, le rendu des pages d’administration n’était pas correct dans les déploiements pour lesquels la minimisation de l’HTML avait été activée. L’application a affiché cette erreur :
An error has happened during application run. See exception log for details
. GitHub-32454
- Le widget
dropdownDialog
charge désormais uniquement les blocsjquery-ui
déplaçables et redimensionnables dont il a besoin. Auparavant, il chargeait de grandes quantités de code superflu, ce qui gonflait le temps de chargement et réduisait les performances. GitHub-32810
Réécritures d’URL
- Les réécritures d’URL de produit pour un site Web spécifique dans un déploiement multisite sont désormais générées comme prévu après que les produits sont affectés à un site Web par mise à jour en bloc.
- L’application génère désormais correctement le chemin d’accès URL pour les catégories enfants lorsque la case à cocher Utiliser la valeur par défaut pour la clé URL est activée pour la catégorie parente. Auparavant, le déplacement d’une catégorie dans la hiérarchie entraînait une valeur incorrecte
url_path
lors de l’utilisation de clés d’URL différentes dans un déploiement d’affichage multi-magasin. GitHub-16202
- L’application met désormais à jour le
url_path
de la catégorie affectée à toutes les étendues de magasin lorsque vous déplacez une catégorie dans la hiérarchie de catégories. Auparavant, le déplacement d’une catégorie dans la hiérarchie entraînait une erreururl_path
.
- Les redirections d’URL créées à partir de l’administrateur à l’aide d’une URL personnalisée fonctionnent désormais correctement. Auparavant, GraphQL mettait en cache la réponse d’une requête GraphQL
urlResolver
et renvoyait l’ancienne valeur après la mise à jour de la réécriture de l’URL.
- Les réécritures d’URL de produit sont désormais supprimées comme prévu lorsqu’un produit est supprimé d’un site web. GitHub-24184
- Ajout d’une référence
main_table
àstore_id
dans la fonctionaddStoreFilter
de la collectionapp/code/Magento/UrlRewrite/Model/ResourceModel/UrlRewriteCollection.php
. Auparavant, des problèmes se produisaient lorsqu’unjoin
était ajouté à la collection sur une table contenant également une colonnestore_id
. GitHub-31853
- Le point d’entrée REST
PUT /V1/products/:sku
génère à nouveau les réécritures d’URL de produit comme prévu. Auparavant, le point de terminaison a généré à nouveau les valeursurl_key
du produit, mais pas les URL qui réécrivent. GitHub-30316
Utilisateur
- Vous pouvez désormais enregistrer un nouveau rôle d’utilisateur effectif (administrateur Système > Autorisations > Rôles d’utilisateur) avec l’arborescence
Catalog
entière sélectionnée à l’exception deEdit Product Design
( Catalogue > Inventaire > Produits > Modifier la conception du produit)). Auparavant, l’application n’enregistrait pas les modifications de produit effectuées par un utilisateur dans ce rôle et affichait cette erreur :Not allowed to edit the product's design attributes
. GitHub-31973
- L’application utilise désormais le modèle de courrier électronique personnalisé correct lors de la génération de courrier électronique pour les nouveaux administrateurs. Auparavant, l’application utilisait l’ancien modèle par défaut, qui omettait les prénoms et les noms de l’administrateur.
- L’application utilise désormais le modèle de courrier électronique correct lors de l’envoi d’un courrier électronique à de nouveaux utilisateurs. Auparavant, l’application utilisait le modèle par défaut même lorsqu’un modèle personnalisé était sélectionné.
VersionCMS
- L’application applique désormais le thème correct à une page CMS après avoir modifié sa mise en page. Auparavant, l’application modifiait le thème affecté sur Luma après avoir enregistré vos modifications de mise en page, quel que soit le thème qui était affecté à la page.
- Les administrateurs disposant de rôles restreints peuvent désormais ajouter, mettre à jour ou dupliquer avec succès les pages auxquelles il a accès qui sont affectées à un noeud de hiérarchie. Auparavant, l’application générait une erreur irrécupérable dans ces conditions.
Vidéo
- Les vidéos sont désormais disponibles dans la galerie de produits comme prévu lorsque le regroupement de JavaScript avancé est activé et utilisé. GitHub-32501
- Les vidéos YouTube pour les produits simples qui appartiennent à un produit configurable fonctionnent maintenant comme prévu. Auparavant, les images étaient classées par ID plutôt que par position. Par conséquent, certaines vidéos ont été traitées comme des images. GitHub-29690
Marchandisage visuel
- Les performances du chargement de la page de catégorie d’administration avec Visual Merchandiser ont été améliorées. Le chargement de pages de catégorie Administration ne génère plus de requêtes de base de données volumineuses.
Structure de l’API web
- L’API Catalog met désormais correctement à jour les valeurs des options personnalisées d’un produit en ajoutant de nouvelles valeurs et en supprimant les anciennes valeurs. Auparavant, l’API ne supprimait pas les anciennes valeurs.
/V1/guest-carts/:cartId/billing-address
POST renvoie désormais l’ID d’adresse sous la forme d’un entier, et non d’une chaîne.
Restriction du site Web
- Les acheteurs sont maintenant redirigés vers la page à laquelle ils essayaient d’accéder avant d’être invités à se connecter. Auparavant, dans les déploiements où les restrictions du site web étaient activées et où le mode de restriction était défini sur Ventes privées : connexion uniquement, les acheteurs étaient redirigés vers la page d’accueil du magasin.
Widget
- Un administrateur peut désormais supprimer toutes les mises à jour de mise en page d’un widget. Auparavant, lorsqu’un widget avait plusieurs mises à jour de mise en page, un administrateur ne pouvait supprimer que la première.
- Cliquez sur le bouton Ajouter au panier dans le widget du produit n’entraîne plus le rechargement de la page. Auparavant, le fait de cliquer sur le bouton Ajouter au panier d’un widget de produit entraînait le rechargement d’une page actuelle avant que le produit ne soit ajouté au panier.
- Le widget de lien de nœud de hiérarchie CMS dans TinyMCE effectue désormais le rendu des liens de hiérarchie comme prévu lorsque le champ Texte personnalisé d’ancre est vide.
Liste de souhaits
- L’application ne réinitialise plus les paramètres de configuration d’un produit configurable lorsque vous cliquez sur le bouton Modifier l’article pour le produit à partir d’une liste de souhaits. GitHub-32119
- L’application affiche désormais le prix correct du produit lorsque vous mettez à jour un produit avec une option de fichier personnalisable dans la liste de souhaits. Auparavant, l’application affichait un prix de produit incorrect et n’affichait pas de lien vers le fichier téléchargé.
- Le nombre total de produits dans une liste de souhaits pour un client avec plusieurs listes de souhaits correspond désormais au nombre d’éléments dans la liste de souhaits. Auparavant, les produits en rupture de stock étaient inclus dans le nombre total de produits.
- L’application supprime désormais un produit d’une liste de souhaits après l’avoir ajouté à une commande. GitHub-30260
- Les acheteurs peuvent désormais ajouter des produits associés à leur panier à partir d’une liste de souhaits. Auparavant, l’application ajoutait uniquement le produit configurable, et non le produit configurable et ses produits associés, lorsqu’un acheteur cliquait sur le lien Sélectionner tout de la section Produits associés . GitHub-32274
Problèmes connus
Problème : JavaScript erreur lorsque reCAPTCHA est désactivé. Si reCAPTCHA est désactivé pour l’extraction, l’extraction a lieu, mais l’application affiche une Uncaught TypeError
erreur dans le journal de la console. Ce problème sera résolu dans une version ultérieure.
Problème : Erreur de stratégie de sécurité du contenu. Le storefront affiche l’erreur suivante dans le journal de la console : The Content-Security-Policy directive frame-ancestors does not support the source expression unsafe-inline
. Les performances de Storefront ne sont pas affectées.
Problème : Anomalies avec crédit PayPal affichant des montants de carte-cadeau. Lorsque le crédit PayPal est activé et que plusieurs montants de carte-cadeau sont configurés, si un acheteur modifie le montant de la valeur d’une carte-cadeau, le storefront ne met pas à jour le montant des paiements par versements. Un correctif pour ce problème sera inclus dans Adobe Commerce 2.4.4 et Magento Open Source 2.4.4.
Problème : Le bouton Ajouter à la commande ne fonctionne pas pour les produits ajoutés au panier par SKU. l’application affiche ce message d’erreur lorsque vous cliquez sur le bouton Ajouter à la commande après avoir ajouté des produits à la commande par SKU : An error has happened during application run
. Les produits ne sont pas ajoutés au panier. Solution : utilisez la fonction Ajouter des produits .
Problème : les requêtes GraphQL category
et categoryList
ignorent les autorisations de catégorie qui déterminent si les catégories d’un catalogue partagé sont masquées ou exposées. Le storefront affiche actuellement toutes les catégories qui ont été affectées ou non au catalogue partagé. Cela affecte les déploiements Adobe Commerce 2.4.3 qui implémentent une vitrine PWA pour laquelle les catalogues partagés B2B ont été activés.
Contributions communautaires
Nous sommes reconnaissants envers l’ensemble de la communauté Magento Open Source et tenons à remercier leurs contributions à cette version.
L’équipe d’ingénierie communautaire Magento contributeurs tient à jour une liste des principales personnes et partenaires contributeurs par mois, trimestre et année. À partir de cette page Contributeurs, vous pouvez suivre des liens vers leurs PR fusionnés sur GitHub.
Contributions des partenaires
Le tableau suivant met en évidence les contributions des partenaires. Ce tableau répertorie le partenaire qui a fourni la demande d’extraction, la demande d’extraction externe et le numéro de problème GitHub qui lui est associé (le cas échéant).
Contributions individuelles des contributeurs
Le tableau suivant répertorie les contributions des membres de notre communauté. Ce tableau répertorie les demandes d’extraction externes, le numéro de problème GitHub qui lui est associé (le cas échéant) et le membre de la communauté qui a contribué à la demande d’extraction.
Configuration système requise
Notre pile de technologie est basée sur PHP et MySQL. Pour plus d’informations, voir Configuration requise.
Instructions d’installation et de mise à niveau
Vous pouvez installer Adobe Commerce 2.4.3 à l’aide de Composer.
Kits d’outils de migration
L’outil de migration des données permet de transférer les données de magasin Magento 1.x existantes vers Magento 2.x. Cette interface de ligne de commande comprend des fonctions de vérification, de suivi de progression, de journalisation et de test. Pour obtenir des instructions sur l’installation, voir Installation de l’outil de migration de données. Envisagez d’explorer le référentiel🔗 de migration de données ou d’y contribuer.
Code Migration Toolkit permet de transférer les extensions et personnalisations de magasin Magento 1.x existantes vers Magento 2.x. L’interface de ligne de commande inclut des scripts pour convertir Magento modules et mises en page 1.x.