Notes de mise à jour de Adobe Commerce 2.4.3
Adobe Commerce 2.4.3 apporte des améliorations aux performances et à la sécurité, ainsi que des améliorations significatives de la plate-forme. 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 du compositeur principal 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 du code principal et 33 améliorations de la sécurité. Tous les problèmes connus identifiés dans les notes de mise à jour de la version 2.4.2 d’Adobe Commerce ont été corrigés dans cette version.
Voir les notes de mise à jour d’Adobe Commerce 2.4.2-p2 pour plus d’informations sur 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 Applications (PWA) Studio) sont également publiés indépendamment. Les correctifs de bogues pour ces projets sont documentés dans les informations de version distinctes spécifiques au projet qui sont disponibles dans la documentation de chaque projet.
Appliquez MC-43048__set_rate_limits__2.4.3.patch pour résoudre le problème lié à la limitation du débit 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 versions 2.4.3, Adobe Commerce 2.4.3 ou 2.3.7-p1. Une 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 à 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 str_contains
fonction, 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 de la base Adobe de connaissances PHP Upgrade 2.4.3, 2.3.7-p1 PHP Fatal error Hotfix .
Appliquez AC-3022.patch
pour continuer à proposer DHL comme transporteur
DHL a introduit la version 6.2 du schéma et désapprouvera la version 6.0 du schéma dans un avenir proche. Adobe Commerce 2.4.4 et les versions antérieures prenant en charge l’intégration DHL prennent uniquement en charge la version 6.0. Les commerçants qui déploient ces versions doivent s’appliquer AC-3022.patch
dès que possible pour continuer à offrir DHL en tant que transporteur maritime. Consultez l’article de la base de connaissances Appliquer un correctif pour continuer à proposer DHL en tant que transporteur maritime pour plus d’informations sur le téléchargement et l’installation du correctif.
Faits saillants
Look pour les éléments suivants de cette version.
Améliorations substantielles de la sécurité
Cette version comprend 33 correctifs de sécurité et améliorations de la sécurité de la plateforme. La plupart de ces correctifs de sécurité ont été rétroportés en 2.4.2-p2 et 2.3.7-p1.
Trente-trois améliorations de la sécurité qui permettent de corriger les vulnérabilités RCE (Remote Code Execution) et XSS (Cross-site scripting)
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 sur les clients ou prendre le contrôle de sessions d’administration. La plupart de ces problèmes nécessitent qu’un attaquant obtienne d’abord l’accès à l’administrateur. Placer sur la liste autorisée Par conséquent, nous vous rappelons de prendre toutes les mesures nécessaires pour protéger votre administrateur, y compris, mais sans s'y limiter, ces efforts : la limitation des adresses IP, l'authentification à deux facteurs, l'utilisation d'un VPN, l'utilisation d'un emplacement unique plutôt que d'un /admin
, et une bonne hygiène des mots de passe. Consultez Adobe Bulletin de sécurité pour une discussion sur ces problèmes résolus.
Autres améliorations de la sécurité
Les améliorations apportées à la sécurité dans cette version améliorent la conformité aux dernières meilleures pratiques de sécurité, notamment :
-
Un nouveau plug-in Composer permet d’éviter toute confusion de dépendance et identifie les packages malveillants portant les mêmes noms que les packages internes sur le référentiel de packages public. Voir le billet de blog sur les versions Adobe Nouveau 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é à une valeur différente en fonction des besoins de l’entreprise) qui peuvent être demandées par un client. Voir Limitation de débit pour plus d’informations sur la configuration de ces restrictions.
-
La couverture de ReCAPTCHA a été étendue pour inclure :
-
Les API web avec les pages HTML correspondantes sont couvertes via ReCAPTCHA. (Cela exclut les API Web accessibles par le biais d’intégrations.) La couverture ReCAPTCHA protège les points d’entrée des attaques de spam. Lorsque l’accès aux API web est réalisé par un service d’intégration tiers qui utilise OAuth, ReCAPTCHA est désactivé.
-
Page de storefront Passer une commande et API web liées au paiement. La protection ReCAPTCHA pour ces pages est désactivée par défaut et peut être activée à partir de l’Administration. Cette couverture ajoute un mécanisme anti-force brute pour protéger les magasins des attaques par cartes.
-
Améliorations de l’infrastructure
Cette version comprend des améliorations qui améliorent la qualité du framework et les domaines fonctionnels suivants :
-
Compte client
-
Catalogue
-
CMS
-
OMS
-
Import/Export
-
Promotions et ciblage
-
Panier et passer en caisse
-
B2B
-
Évaluation et prévisualisation
PayPal Pay Later est désormais pris en charge dans les déploiements qui incluent PayPal. Cette fonctionnalité permet aux acheteurs de payer une commande par versements bimensuels au lieu de payer le montant total au moment de l’achat.
Nouveau mode d’indexation use_application_lock
. Le mode use_application_lock
vous permet d’activer la réindexation soit en utilisant des variables d’environnement, soit en configurant le fichier app/etc/env.php
. Vous n’avez plus besoin de réinitialiser manuellement l’indexeur après un échec lorsque ce mode est activé. Voir Utilisation du mode de verrouillage de l’application pour les processus de réindexation.
Améliorations de Platform
La version 2.4.3 n'est pas encore compatible avec PHP 8.x, mais les mises à niveau suivantes de la plateforme nous rapprochent de la compatibilité future avec PHP 8.x.
-
Les dépendances du compositeur principal 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 version 3.5.1 (la dernière version).
-
La bibliothèque TinyMCE v3 obsolète a été supprimée. Le module
Magento_Tinymce3Banner
et les tests MFTF relatifs à TinyMCE v3.x ont été supprimés d’Adobe Commerce. -
La compatibilité de la version 2.4.3 avec Redis 6.0.12 a été testée et confirmée. (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 avec PHP 8.x. Certaines dépendances redondantes ont été supprimées du fichier
composer.json
. Adobe Commerce 2.4.3 utilise Laminas 3.4.0.
Améliorations des performances
Cette version comprend des améliorations qui réduisent le temps d’indexation des indexeurs de prix de produit et de règles de catalogue. Les commerçants 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é par Adobe Sensei offre une expérience de recherche intuitive en utilisant l’intelligence artificielle et des algorithmes d’apprentissage automatique pour effectuer une analyse approfondie des données agrégées des visiteurs. Voir Notes de mise à jour de Live Search.
GrapheQL
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éer, mettre à jour ou supprimer des registres de cadeaux.
-
Mettre à jour ou supprimer des articles d'un registre des cadeaux.
-
Déplacez tous les articles du panier vers le registre des cadeaux.
-
Ajouter, mettre à jour ou supprimer les inscrits d'un registre des cadeaux.
-
Partagez un registre cadeau avec les invités.
-
-
Devis négociables. Voir les requêtes
negotiableQuote
etnegotiableQuotes
.Les nouvelles mutations incluent :
-
itinéraires partagés. Les requête d’itinéraire et RoutableInterface prennent en charge les requêtes de routage sur les pages de produits, de catégories et de CMS. La requête
urlResolver
a été abandonnée et sa fonctionnalité a été remplacée par la requêteroute
.
Consultez le Guide du développeur de GraphQL pour plus d’informations sur ces améliorations.
B2B
La version 2.4.3 introduit B2B v1.3.2. Cette version comprend plusieurs correctifs. Voir Notes De Mise À Jour B2B.
Page Builder
Page Builder est désormais disponible en tant qu’extension groupée dans Magento Open Source. Il s’agit désormais de 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 en tant qu’HTML.
PWA Studio
Pour plus d’informations sur les améliorations et les correctifs, voir Versions de PWA Studio. Consultez compatibilité pour obtenir la liste des versions de PWA Studio et de leurs versions compatibles.
Outil de compatibilité de mise à niveau
La portée de l’outil🔗 de compatibilité de mise à niveau a été élargie 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 comprend des améliorations de notre prise en charge d’Amazon Simple Storage Service (AWS S3) et des services gérés dans le cloud Amazon Aurora. Il fournit une prise en charge certifiée pour AWS ElastiCache, AWS Elasticsearch et les files d’attente gérées par AWS (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 les fournisseurs
Consultez les rubriques suivantes pour connaître les fonctionnalités et les modifications de cette version :
-
Amazon Payer. Amazon Pay est obsolète et sera supprimé dans une version ultérieure de la version 2.4.x. Les versions 2.4.3 et supérieures ne contiendront que des mises à jour pour la compatibilité et des correctifs pour les bogues majeurs.
Problèmes résolus
Nous avons corrigé des centaines de problèmes dans le code principal 2.4.3.
Installation, mise à niveau, déploiement
- La
bin/magento setup:db:status
commande renvoie maintenant 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 lors du rechargement du formulaire lorsque la création d’un nouveau produit configurable échoue. Auparavant, les valeurs étaient perdues pendant le 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 d’un déploiement Magento Open Source avec Redis vers Adobe Commerce.
- Les règles de prix de panier précédemment créées sont désormais affichées sur la page Tableau de bord d’é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 le cluster Galera prennent désormais en charge davantage de clients. GitHub-31038
- Les administrateurs peuvent désormais se connecter à un déploiement lorsque l’application a été installée avec l’option
—use-rewrites=0
ou avec laweb/seo/use_rewrites
définie sur 0 danscore_config_data_table
. GitHub-32100
- Mise à jour du chargement du
sortOrder
pourAsyncCssPlugin
. L’application se chargeAsyncCssPlugin
désormais avant leJsFooterPlugin
. GitHub-30882
Magento\Config\Model\Config\PathValidator
vérifie maintenant le chemin d’affichage pour déterminer si un élément existe et, s’il a un chemin de configuration, utilise le chemin à la place pour laconfig.xml
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
int
désormais des valeurs pour la condition SQL dans leswebsite_id
collections Admin 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 Magasins d’administration > Configuration > système > avancé sur la page Search pour Adobe Stock lorsque la clé d’API (ID client) et le 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 restreint (par exemple, l’accès à un seul site Web) ne peuvent plus modifier les catégories définies sur l’étendue 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é correctement.
- 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 bundle de produits. Auparavant, l’application générait une erreur de validation lorsque vous supprimiez une valeur du champ Prix lorsque le paramètre Prix dynamique é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.
Lots de produits
- Vous pouvez désormais utiliser la mutation
addProductsToCart
pour ajouter un lot de produits 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 le verrouillage de celles-ci.
- Le prix d'un article groupé peut maintenant ê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 revenait à sa valeur par défaut. GitHub-32383
- Les détails de commande des commandes contenant des produits groupés affichent désormais le prix correct des produits groupés si le prix a été modifié avant la commande.
- Le statut de stock du produit groupé est désormais mis à jour en fonction du statut de stock de ses produits enfants. Auparavant, les produits groupés s’affichaient comme étant en rupture de stock lorsqu’une option était supprimée du produit et le produit groupé avait deux options avec le même SKU.
- Un administrateur peut désormais modifier la valeur de l’attribut
Shipment Type
d’un produit groupé après l’avoir déplacé 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
setGuestEmailOnCart
de GraphQL met désormais correctement à jour les e-mails des invités. Auparavant, les tables devis et adresse de devis n'étaient pas mises à jour.
- L’ajout, la suppression ou la mise à jour d’un produit enfant vers un produit groupé par le biais d’appels API REST déclenche désormais la réindexation prévue. Auparavant, ces actions ne déclenchaient pas de réindexation et, par conséquent, le produit groupé ne modifiait pas son statut de stock tant qu’une 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 par niveau. GitHub-30284
- L’application affiche désormais le même prix total que prévu sur la page du panier et à l’étape d’expédition du workflow de passage en caisse une fois que le prix d’une offre groupée a été modifié.
- Vous pouvez désormais configurer une offre groupée avec succès en y accédant à partir du panier d’un client. Auparavant, la page Configurer le produit n’était jamais complètement chargée et vous ne pouviez pas enregistrer vos paramètres.
- Les commerçants 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 tableau
catalog_product_bundle_selection_price
. Auparavant, l’application ne basait pas le prix d’un produit groupé sur la portée du site web, même lorsque Magasins > Configuration > Catalogue > Catalogue > Prix > Étendue du prix du catalogue était défini surWebsite
. Aucun prix spécifique au site Web n'a été enregistré encatalog_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 fonction Tarification dynamique est désactivée. Auparavant, les produits simples associés au produit groupé avaient la quantité du produit parent, et non du produit groupé). GitHub-30802
- La mutation
updateProductsInWishlist
met désormais à jour avec succès les éléments appartenant à un lot de produits dans une liste de souhaits. Auparavant, au lieu de mettre à jour l’élément de la liste de souhaits, cette mutation l’avait supprimé et en avait créé un nouveau, ce qui modifiait l’ID de l’élément.
- Vous pouvez désormais définir les attributs de lot
required_options
ethas_options
comme prévu lors de la création ou de la mise à jour d’un produit groupé à l’aide du point d’entréePOST /V1/product/:sku
. Auparavant, ces attributs personnalisés étaient définis sur 0 (zéro) malgré les efforts pour le définir sur 1 (un).
- Les données de produit groupées qui étaient auparavant manquantes sont désormais incluses dans le processus d’évaluation. Cela résout les incohérences du comportement du produit lorsque les acheteurs ont acheté un produit groupé à partir de la page de liste des produits plutôt que de l’ajouter directement à partir d’une page de produit.
Cache
- Le fichier
varnish6.vcl
a été mis à jour pour contourner la mise en cache de la page 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'un acheteur de passer en caisse avec PayPal Payflow Pro.
- La validation CAPTCHA n’échoue plus de manière aléatoire sur la page de paiement du workflow de passage en caisse.
- L’application affiche désormais les champs CAPTCHA comme prévu une fois que vous avez dépassé le nombre de tentatives d’achèvement ayant échoué. Auparavant, bien que l’application vous invitait à relancer le test CAPTCHA, elle n’affichait pas les champs CAPTCHA.
- CAPTCHA fonctionne désormais comme prévu sur la page de passage en caisse. Auparavant, lorsqu’un acheteur répondait correctement à un défi CAPTCHA, le chargeur sur la page de passage en caisse ne se terminait jamais et l’application affichait cette erreur :
captchaData[formId] is undefined
. (Cette erreur ne se produisait que lorsque l’acheteur utilisait le même navigateur à partir duquel il avait précédemment accédé à un déploiement exécutant 2.3.5-p1.)
_.isEmpty()
archivages dans le fichierdefaultCaptcha.js
sont maintenant terminés. Auparavant, ces vérifications n’étaient pas terminées et, par conséquent, le chargement de la page d’extraction échouait après la mise à niveau. GitHub-31641
Panier et passer 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 produits dans le panier.
- Les commandes n’omettent plus un nom de client fourni avec une adresse de livraison. Auparavant, les noms étaient omis car l’indicateur
same_as_billing
n’était 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
changent maintenant de statut commecomplete
prévu après la suppression de plusieurs produits. Auparavant, un seul message pour ce client modifiait son statut encomplete
, et le reste passait àin progress
.
- L’application affiche désormais le message de validation des conditions générales dans le bloc approprié uniquement lorsqu’un acheteur clique sur le bouton Passer une commande. Auparavant, l’application affichait ce message dans le bloc Appliquer le code remise chaque fois qu’un acheteur modifiait le 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 maintenant redirigé vers la page de passage en caisse comme prévu après l’ajout d’un produit groupé au panier à partir de l’aperçu de la Mise à jour de la planification et un clic sur le panier. GitHub-447
- L’application rejette désormais les modifications apportées au formulaire d’adresse de facturation à l’étape de paiement si l’acheteur ne clique pas sur le bouton Mettre à jour et revient à l’étape d’expédition.
- L’application affiche désormais un message d’erreur informatif et ne met pas à jour la quantité de 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. Auparavant, l’application mettait à niveau la quantité de produit et n’affichait pas de message d’erreur. GitHub-459
- Les produits dotés d’une option personnalisable
(File)
désormais inclure des liens actifs comme prévu tout au long du processus de passage en caisse avec expédition multiple. Ce lien était auparavant manquant. GitHub-31095
- Le panier Admin affiche désormais les prix des produits dans les devises correctes pour les boutiques qui prennent en charge plusieurs devises. Auparavant, les prix étaient convertis dans la devise spécifiée plus d’une fois, d’abord lorsque les produits étaient ajoutés au panier à partir de la vitrine, puis à nouveau lorsque la commande était ensuite passée sur l’administrateur.
- L’application vide désormais le panier comme prévu après qu’un administrateur a terminé une commande de l’administrateur créée par un acheteur sur la vitrine. Auparavant, lorsque le client se reconnectait après que l’administrateur ait terminé la commande, le panier de la vitrine contenait toujours le contenu de la commande. GitHub-30262
- Les acheteurs peuvent maintenant ajouter à leur panier un produit dont le prix minimum annoncé (PMA) dépasse le prix habituel du produit.
- Les acheteurs peuvent désormais modifier leur adresse de facturation à partir du workflow de passage en caisse lors de la paiement avec plusieurs adresses.
- Toutes les transactions de paiement créées par les invités sont maintenant enregistrées dans la base de données et visibles dans l'administrateur comme prévu. Auparavant, seul un petit sous-ensemble d’ordres simultanés était enregistré dans la base de données, et la plupart des ordres étaient perdus en raison des dépassements de délai résultant des verrous de la base de données. GitHub-25862
- L’application affiche désormais correctement les messages de bienvenue intégrés 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 ou n’affichait pas le message de bienvenue. GitHub-32250
- La page d’expédition du workflow de passage en caisse se charge désormais correctement lorsque la diffusion en magasin est activée. Auparavant, l’application générait une erreur JavaScript et la page de passage en caisse d’expédition ne s’affichait pas complètement.
- Ajout de l’argument
itemResolvers
au fichier dedi.xml
du catalogue. Par conséquent, l’extraction n’est plus interrompue si les modules de produit configurables et groupés sont désactivés. GitHub-30860
- L’application affiche désormais les boutons radio dans la section Informations sur le paiement et l’expédition comme prévu lors du workflow de réorganisation de l’administrateur. GitHub-30257
- L’application applique désormais correctement les règles de prix de panier avec une remise fixe au niveau du panier lorsque le panier contient un produit groupé avec plusieurs options. Auparavant, la règle de prix de panier n’était pas complètement appliquée à la commande. GitHub-30952
- Le bouton Ajouter au panier dans la vue Liste des catégories fonctionne désormais comme prévu. GitHub-32232
- Vous pouvez désormais utiliser les
/V1/carts/mine/items
POST pour ajouter une quantité personnalisée de produits regroupés à un panier. GitHub-26909
- L’application ne renseigne plus la zone des adresses de facturation du workflow de passage en caisse avec l’adresse d’expédition. Auparavant, lorsque le champ État/Province de l’adresse de facturation était vide et que les adresses d’expédition et de facturation différaient, l’application renseignait le champ Adresse de facturation État/Province avec les informations provenant de l’adresse d’expédition. GitHub-31608
Catalogue
- La mise à jour en masse des attributs Activer les incréments de quantité et Incréments de quantité fonctionne désormais comme prévu. GitHub-29544
- Vous pouvez désormais dupliquer un catalogue partagé qui contient des SKU numériques uniquement. Auparavant, l’application générait une erreur lorsque vous tentiez de dupliquer un catalogue partagé car la
\Magento\Catalog\Model\ProductIdLocator
classe ne fonctionnait pas correctement avec les références 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 de la disposition du thème personnalisé 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 de catégorie de produits est maintenant effacé comme prévu par
cron
lors de l’exécution duindexer_update_all_views
. 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 un attribut n’était pas spécifié, l’application réinitialisait la valeur d’attribut à sa valeur d’étendue par défaut.
- La grille Produits d’administration (Catalogue d’administration> Produits) affiche désormais le nombre correct de produits lorsque les produits sont filtrés par UGS.
- L’application affiche désormais l’état précis du stock 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 l’état réel du stock.
- Le champ de saisie Prix du bloc de prix du groupe de clients Tarification avancée a désormais une largeur minimale de cinq chiffres. Auparavant, seuls deux symboles étaient visibles dans ce champ sur les écrans basse résolution.
- L’application supprime désormais avec succès l’image multimédia d’un produit après la suppression d’un produit. Auparavant, l’image du média produit restait dans le dossier après la 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’administration, puis créez une mise à jour de conception de planification. GitHub-32007
- Un attribut de produit personnalisé avec une valeur de zéro peut désormais être enregistré en tant que vide. Auparavant, l’application ne mettait pas à jour cette valeur sur vide.
- Les fichiers de mise à jour de la mise en page de catégorie personnalisée s’appliquent désormais aux produits comme prévu. Auparavant, le handle du fichier de mise à jour (
catalog_category_view_*
) ne correspondait pas au handle du produit. GitHub-27285
- Le tri a été désactivé pour la colonne Taxe fixe sur les produits (FPT) de la liste des produits d’administration. Auparavant, la page Products 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 multisite 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 ne comportait pas de champposition
de valeur 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 ne comporte qu’une seule option.
- L’application affiche désormais toutes les sous-catégories dans les mises à jour de la mise en page (catégories d’ancrage et autres) lors de la création d’un widget.
- La requête
product
ne remplace 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 uniquement. GitHub-31083
- Adobe Commerce met à jour le nombre total de pages comme prévu lorsque vous modifiez la valeur par page de la liste de produits associés à l’administration, de ventes incitatives et de ventes croisées. GitHub-31059
- Les administrateurs peuvent désormais ajouter des produits avec deux options personnalisables
(File)
ou plus à une commande par UGS.
- L’application ne renvoie plus d’erreur lorsqu’un administrateur disposant d’autorisations restreintes ajoute un widget de produit à une page CMS dans l’administration. Auparavant, l’application générait 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 affiche désormais 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 de produit avec une valeur de SKU
NULL
. Auparavant, vous pouviez créer un produit sans valeur de SKU par le biais d’un importateur personnalisé ou directement dans la base de données, mais lorsque vous avez tenté de le modifier à partir de l’Administration, l’application a généré une erreur. GitHub-27411, GitHub-32525
- L’ajout d’options personnalisées requises à un produit simple ne le supprime plus des produits composites parents sans avertissement. L’application affiche désormais 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
products
requête renvoie désormais les valeurs actuelles lorsqu’une règle de prix 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 grandes images sont maintenant redimensionnées comme prévu lors du téléchargement lorsque le paramètre de configuration Activer le redimensionnement frontal est activé.
- Correction de la gestion des erreurs pour le contrôleur de sauvegarde des pages CMS. Auparavant, lorsqu’un
Error
objet était généré sur l’événementcms_page_prepare_save
, l’application transmettait cet objet à laaddExceptionMessage
fonction, rompant ainsi son contrat car cette fonction attend unException
objet . Ce problème a été résolu en ajoutant un message d’erreur à l’aide de laaddErrorMessage
fonction. GitHub-30149
- Vous pouvez maintenant affecter une nouvelle page à plusieurs nœuds à partir de l’onglet Hiérarchie de la page Modifier CMS. Auparavant, une violation de contrainte unique se produisait lorsque vous tentiez d’affecter la page à un nœud. 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 ont été dans le statutrunning
pendant plus de 24 heures sont maintenant automatiquement changés en statuterror
. 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 de nouvelles instances de la même tâche de démarrer et vous deviez modifier manuellement l’état de la tâche. GitHub-8933
cron
Les tâches se terminent maintenant comme prévu et ne génèrent 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
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 dans lecron_schedule schedule
et l’exécution suivante n’échoue pas automatiquement. Auparavant, la table se remplissait de tâches en attente etindexer_update_all_views
lacron_schedule
tâche cron ne s’exécutait pas. GitHub-23054
cron
Les blocages ne se produisent plus suite à la tentative de définition d’uncron
verrou dans les déploiements volumineux où les groupes se chevauchent. GitHub-8933
cron
Les blocages ne se produisent plus sur lacron_schedule
table après l’exécution de quelquescron
tâches seulement. GitHub-22438
Attributs client personnalisés
- Le champ State du carnet d’adresses du compte client storefront est désormais chargé sous la forme et reste un élément de page de liste déroulante. Le bouton Envoyer est maintenant désactivé jusqu’à ce que tous les éléments de page aient é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. Les acheteurs pouvaient alors saisir et enregistrer des valeurs dans le champ de texte, ce qui provoquait par la suite une erreur lors du passage en caisse.
- L’application affiche désormais correctement les attributs d’adresse client personnalisés sur les pages de commande de storefront et d’admin. 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 de client avec une pièce jointe dans le champ Adresse du client administrateur lors du chargement de fichiers. Cela est 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 de panier REST GET renvoient désormais des valeurs d’attribut personnalisé correctes pour les adresses de facturation et d’expédition. Auparavant, les attributs d’adresse personnalisés s’affichaient incorrectement dans la page des détails de la commande dans la page storefront de Mon compte et dans la page Admin.
- L’application gère désormais correctement les fichiers contenant des attributs d’adresse du client avec le type d’entrée
file (attachment)
. Auparavant, l’application générait cette erreur lors du 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 l’adresse e-mail correcte.
- Le filtrage par date de création de compte génère désormais des résultats conformes aux paramètres de fuseau horaire configurés et qui capturent tous les comptes créés pertinents.
- 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 à la page Admin Customers lorsqu’un site web est supprimé dans un déploiement multi-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 charger un fichier avec succès lors de la création d’un attribut d’adresse de client avec un type d’entrée
(File)
. Auparavant, lorsque vous tentiez de charger et d’enregistrer un fichier, l’application générait l’erreur suivante :Something went wrong while saving the file
.
Segment client
- L’application affiche désormais les produits associés en fonction des segments des clients sur le storefront comme prévu. Auparavant, l’application n’affichait pas cette section lorsqu’une règle de produits associés était créée pour des segments de clients spécifiques.
- Les blocs dynamiques sont désormais affichés pour les clients enregistrés dans leurs paniers lorsque le segment de clientèle correspondant est appliqué à la fois 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 la création d’une commande d’administration, l’utilisateur administrateur 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 de segment.
- L’application affiche désormais des blocs dynamiques dans le panier pour tous les clients des segments de clientèle pertinents. Auparavant, les invités ne voyaient pas de blocage même lorsque le segment de clients incluait à 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 client utilisant la condition
Product was Ordered
ont été résolus.
- Ajout d’un observateur d’événement de segment client pour l’API REST/SOAP. Par conséquent, les segments clients sont désormais automatiquement mis à jour comme prévu si les critères définis dans les segments sont respectés lorsque les commandes sont passées via l’API REST/SOAP.
- Un processeur d’événements de segment client a été ajouté pour les requêtes GraphQL. Auparavant, les remises liées aux règles de prix de panier n’étaient pas appliquées au panier lorsqu’un segment client était utilisé dans une condition de règle de prix de panier. GitHub-371
Répertoire
- L’application ne renvoie plus d’exception lorsqu’un acheteur saisit 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 s’affichent désormais uniquement sur la page spécifiée. Auparavant, l’application affichait toutes les bannières affectées au widget sur toutes les pages si aucun bloc dynamique n’était spécifié.
- Vous pouvez désormais enregistrer des blocs dynamiques avec du contenu vide.
VAE
- Les valeurs de date d’attribut d’adresse client sont désormais enregistrées au format à quatre chiffres au lieu de deux chiffres.
- Le lien de réinitialisation du mot de passe sur la page Mot de passe de réinitialisation administrateur fonctionne désormais comme prévu. Auparavant, lorsqu’un modèle personnalisé était utilisé pour la page Réinitialiser le mot de passe administrateur , l’application affichait ce message lorsqu’un administrateur cliquait sur le lien contenu dans l’e-mail :
Your password reset link has expired
. Ce problème se produisait car le modèle d’e-mail personnalisé contenait une variable incorrecte pour l’ID utilisateur.
- L’envoi d’e-mails client à partir de l’administrateur fonctionne désormais correctement lorsqu’il est activé au niveau de la vue du magasin. Auparavant, l’application n’envoyait pas d’e-mails aux clients lorsque les paramètres de notification par e-mail étaient activés au niveau du magasin-vue, mais pas au niveau global.
- L’application envoie désormais les e-mails comme prévu dans les déploiements multisites où tous les sites web n’ont pas activé l’envoi asynchrone de messages. Auparavant, si ce paramètre était désactivé pour au moins un site web, les e-mails n’étaient envoyés depuis aucun site web, même lorsqu’ils étaient activés. Les e-mails de facture, d’expédition et d’avoir 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 d’avoir ont été envoyés avec succès. GitHub-31950
- L’e-mail que l’application envoie lorsque vous partagez un registre des cadeaux avec 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 fichiers PDF de factures incluent désormais les mêmes prix pour les produits groupés que prévu. Auparavant, les fichiers PDF de facture incluaient un prix incorrect pour les produits groupés. GitHub-12856
- Un casting de chaîne a été ajouté à la méthode de filtrage des modèles d’e-mail pour s’assurer que la valeur renvoyée est une
string
. Auparavant, lorsqu’une exception était capturée alors qu’elle n’était pas en mode développeur, l’application renvoyait un objetphrase
. Cela a déclenché uneUncaught TypeError
fatale. GitHub-32671
- Les e-mails de confirmation de commande sont désormais envoyés comme prévu lorsque l’envoi asynchrone est activé (Magasins > Configuration > Ventes > E-mails de vente > Paramètres généraux > 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
Cadres
- Les classes parentes dans l’administrateur sont maintenant vérifiées pour l’annotation docblock avec la classe d’origine et les interfaces héritées. Auparavant, comme les classes parentes n’étaient pas cochées, l’exécution d’actions liées au client dans l’administrateur qui déclenchaient un événement entraînait une erreur. L’application a enregistré 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 dans lequel 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 de médias était sauvegardé malgré ce paramètre, car le chemin d’accès à/magento
était incorrectement formé 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. Les tables sont maintenant créées et renseignées correctement avec les données. Auparavant, comme la vérification de l’existence de la table était incorrecte, l’application générait des erreursSQLSTATE
lorsque vous l’bin/magento setup:db-schema:split-sales
.
- La gestion des exceptions pour les processus enfants dupliqués par
ProcessManager
a été améliorée. Lorsqu’une exception se produit maintenant, le processus principal se ferme et un message d’erreur s’affiche une seule fois. Auparavant, plusieurs échecs de l’indexeur étaient consignés et plusieurs messages s’affichaient. GitHub-30622
- Les modules externes globaux d’Adobe Commerce (par exemple,
webapi_rest
etgraphql
) ne sont plus déclenchés pour un nouveau type de zone personnalisée lorsque ladi.xml
de ce fichier de zone ne contient aucun module externe enregistré.
- Les exceptions qui se produisent pendant l’initialisation ne sont plus mises en cache et déclenchent désormais un code de réponse 500.
- Les marchands peuvent désormais attribuer ou supprimer une image vers et à partir d’un événement de catalogue par magasin. Auparavant, lorsque vous modifiiez l’affichage du 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
communication.xml
fichier 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 de produits et sur la page Mon compte des 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 de l’image ne s’arrête plus pour les images dans un format non pris en charge. Auparavant, lorsque
catalog:images:resize
rencontriez un format d’image non pris en charge, 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 la portée de l’attribut
media_gallery
. Auparavant, lorsque vous repositionniez la portée de l’attributmedia_gallery
surglobal
, l’application générait une erreur.
- Les produits associés qui ont été ajoutés dans le cadre d’une mise à jour planifiée ne s’affichent plus sur la page produit d’un storefront après la date de fin de la mise à jour. GitHub-469
- L'application affiche désormais un message précis et informatif lorsque vous cliquez sur Gérer les articles sur la page Mon compte - Registre des cadeaux 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 désormais ajouter une page CMS à partir 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 maintenant copiées comme prévu du répertoire vers le répertoire lorsque les
catalog/category
catégories sont enregistrées à l’aide de la méthode de stockage de base decatalog/tmp/category
données. La ligne d’imagemedia_storage_file_storage
du tableau présente désormais également la valeur .directory_id
GitHub-11995
- Les marchands sont désormais informés des caches invalidés comme prévu après avoir soumis des modifications à la hiérarchie CMS. Auparavant, l’application n’invalidait pas les caches lors de l’enregistrement de la hiérarchie CMS.
- Les demandes de AJAX redondantes dans 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 l’inclusion de mots réservés dans les clés d’URL. Voir Définition des URI (Uniform Resource Identifiers) connus
- Sur les déploiements exécutant PHP 7.4, l’application renvoie désormais une erreur 404 lorsque le paramètre Générer les réécritures d’URL « catégorie/produit » 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 Groupe de conception et Planifier la mise à jour de conception 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 d’administration (ou vers la page configurée comme page de démarrage) et devait accéder manuellement à sa destination. GitHub-31042
- Ajout 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 de l'Albanie, du Danemark, de la Grèce, de l'Islande, du Portugal et de la Suède au tableau
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 référence désormais l’objet de classe correct lors du chargement des informations fiscales pour les pages Note de crédit et Facture Admin. 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 cette intégration :
Sorry! Something went wrong. Please try again later
. GitHub-28996
- L’application affiche désormais un message d’erreur informatif lorsqu’une expédition, un avoir ou un identifiant de facture incorrect est transmis dans une URL. Auparavant, l’application générait une erreur irrécupérable. GitHub-30424
- La récursivité à l’emplacement des fichiers statiques a été supprimée. L’application affiche désormais une page 404 au lieu d’une erreur 500. Auparavant, un bogue dans la configuration NGINX par défaut entraînait une récursivité infinie. GitHub-31530
- Le nom de fichier
cms_index_noroute.xml
a été corrigé encms_noroute_index.xml
. GitHub-31300
- Le fichier
.editorconfig
a été refactorisé pour corriger la mise en forme automatique des fichiersdb_schema_whitelist.json
. GitHub-31171
- Le redimensionnement d’une fenêtre de navigateur ne déclenche plus les événements de loupe de liaison en double. GitHub-30788
- L’application ne renvoie plus d’exception SQL lors du filtrage des
Magento\Users\Model\ResourceModel\Users\Collection
paruser_id
. GitHub-31216
Cartes cadeaux
- 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 lorsque
cron
s’exécutait 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 lors d’un passage en caisse avec plusieurs adresses. Auparavant, l’application ne supprimait pas la carte cadeau de la commande lorsque l’acheteur la sélectionnait, 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 de cadeau
- La mutation
setGiftOptionsOnCart
crée désormais correctement des messages cadeaux. GitHub-388
Registre des cadeaux
- Date de l’événement les valeurs sont désormais identiques sur le storefront et l’administrateur lors de la création ou de la modification du registre des cadeaux. Auparavant, chaque fois que vous modifiiez et enregistriez 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 de 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 du cadeau est désormais appliqué comme prévu aux commandes expédiées à plusieurs adresses.
- L’application supprime désormais les frais d’emballage des cadeaux du panier une fois tous les produits supprimés.
- Les totaux des avoirs sont désormais corrects lorsque l'avoir contient un emballage cadeau et des frais de produit configurables. Auparavant, le montant de taxe sur les emballages-cadeaux n'était pas toujours inclus dans le total de l'avoir. GitHub-34
Google Analytics
- L’application ne renvoie plus d’erreur lorsqu’un administrateur tente de charger une page sur la vitrine lorsqu’Google Analytics est activée. Une entrée CSP pour a été ajoutée pour
connect-src
permettre aux demandes de AJAX de www.google-analytics.com. GitHub-30880
Google Tag Manager
- Le composant d’interface utilisateur de l’adresse de facturation sur la page de paiement du processus de paiement utilise désormais correctement l’adresse de devis lorsque Google Tag Manager est activé. Auparavant, une erreur JavaScript se produisait sur la page de paiement.
GrapheQL
- La requête
products
GraphQL renvoie désormais des 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
{ category(id: 2){ children { name children { name } } } }
GraphQL comprend désormais une arborescence de catégories correctement triée.
- L’objet
CartItemPrices
contient désormais la nouvellefixed_product_taxes
de champ GraphQL, qui renvoie un tableau des taxes sur les produits fixes appliquées à un article du panier. Auparavant, les taxes fixes sur les produits 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 la génération du résultat de la requête.
- La mutation
applyRewardPointsToCart
met désormais à 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 montée en gamme.
- Les commerçants peuvent désormais utiliser la méthode de
setShippingAddressesOnCart
GraphQL pour définir les adresses de facturation et d’expédition d’un panier d’achat lorsque le passage en caisse du client 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
product
GraphQL renvoie désormais les prix corrects du groupe de clients.
- La réponse à la requête
products
de GraphQL trie désormais les agrégations en fonction de la position des attributs de 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 requête
dynamicBlocks
renvoiecontenu des blocs dynamiques correspondant aux filtres spécifiés.
- La demande de
V1/products/special-price-delete
POST supprime désormais uniquement le prix avec unstore_id
spécifié 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 la mutationcreateGiftRegistry
.
- Correction de problèmes liés à l’attribut
giftRegistryUid
de la mutationupdateGiftRegistryItems
.
- Ajout d'une vérification supplémentaire pour empêcher que la mutation
updateGiftRegistryRegistrants
ne soit utilisée pour ajouter des personnes aléatoires en tant qu'inscrits à un registre de cadeaux.
- La mutation
addConfigurableProductsToCart
renvoie désormais la miniature correcte du produit spécifié. Auparavant, elle renvoyait la vignette du produit parent.
- La
products
requête 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
customer
réponse à la requête inclut désormais l’attributtotal_giftcard
dans l’objetOrderTotal
.
- Correction d’un problème en raison duquel la requête renvoyait des informations erronées sur les niveaux de prix sur les articles pour lesquels le
products
niveau de prix n’est pas défini. GitHub-32279
Image
- Vous pouvez désormais définir les attributs de bundle required_options et has_options comme prévu lors de la création ou de la mise à jour d’un produit groupé à l’aide du point d’entrée de
/V1/product/:sku
POST. 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
- Le statut du stock de produits configurable est désormais automatiquement mis à jour comme prévu lorsque le statut du stock de produits enfants est mis à jour par l’importation. Auparavant, le statut du stock de produits n’était pas automatiquement mis à jour lorsque le statut du stock de produits enfants était mis à jour par l’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 valeur denot selected
était 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 stock et d’entités client. Auparavant, le processus d’exportation ignorait la portée du rôle d’utilisateur, ce qui permettait d’exporter des entités d’exportation de rôle d’utilisateur privé.
- L'application définit désormais la classe de taxe du produit sur
None
si un produit est importé avec des valeurstax_class_name
None
ou0
. Auparavant, siproduct tax_class_name
étaitNone
dans le fichier CSV, l’application créait une classe de taxeNone
, qui dupliquait la classe de taxe 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’adresses personnalisées pour de nombreux clients (Admin System > Export) n’entraîne plus d’erreur de mémoire systématique. Auparavant, lors de l’exportation de données d’adresse personnalisées, l’application tentait de charger toutes les données client, ce qui entraînait une déplétion de la mémoire, et l’application générait une erreur d’échec d’allocation de la mémoire.
- Les prix de niveau 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, et lorsque des prix de niveau en double se produisaient, les commerçants ne pouvaient pas enregistrer les 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 des produits sont désormais validées lors de l’importation. Auparavant, l’application ne validait que la première image lorsqu’un produit avait plusieurs images. GitHub-28236
- Vous pouvez désormais supprimer une région d’une adresse de client comme prévu lors de l’importation. Auparavant, la région affectée ne changeait pas lorsqu’une adresse de client était importée avec une région vide.
- Les produits avec du contenu JSON ou HTML en tant qu’attributs de produit supplémentaires sont désormais correctement exportés 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 avec succès 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 de storefront lors de la liaison de produits à l’aide d’une demande de
/V1/products/:sku/links
REST PUT lorsque le mode indexeur est défini sur Mise à jour lors de l’enregistrement.
- L’indexeur de règles de prix de catalogue fonctionne désormais comme prévu lorsque le mode d’indexeur est défini sur Mise à jour lors de l’enregistrement. GitHub-370
- La suppression d’une catégorie désactivée qui n’inclut pas de produit n’a désormais aucun effet sur la recherche catalogue et les tables d’index plat de catégories. Auparavant, la suppression d’une catégorie inactive déclenchait une 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 du dernier indexeur défini sur Mettre à jour par planification plutôt que l’indexeur désigné. GitHub-21853
- L’application n’envoie plus AJAX demandes de rechargement des sections de données client (
Magento_Customer/js/section-config
) qui ne sont pas affectées par la demande. 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épendances). Auparavant, ces suppressions accidentelles déclenchaient la réindexation complète des sites. Un réindexation complète est désormais empêché dans ces conditions lorsque le catalogue plat n’est pas activé.
Infrastructure
- Le
pelago/emogrifier
de dépendance a été mis à jour de la version 3.1.0 à la version 5.0.0. Cette mise à jour a entraîné l’introduction de modifications non rétrocompatibles dans la classeMagento\Email\Model\Template\Filter
. Le code modifié est exécuté lors du rendu des modèles d’e-mail. Voir Référence BIC.
- Correction d’un problème lié à
\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 relatifs à TinyMCE v3.x ont été supprimés d’Adobe Commerce.
- L’application ne renvoie plus d’erreur
Invalid header value detected
dans le formulaire Nous contacter lorsqu’un acheteur saisit une adresse e-mail qui contient des signes diacritiques français (par exemple « é », « è »). 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 codage ASCII dans la section unique de l’adresse e-mail.
- L’application ne renvoie plus d’erreur fatale PHP lorsqu’un module externe est ajouté à une classe parente. 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é avec PHP 8.
ramsey/uuid
a été mis à jour pour la 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
$_isScopePrivate
de propriété obsolètes dans toute la base de code. GitHub-30506
- Les dispositions de pages ne sont plus codées en dur dans
Magento\Widget\Block\Adminhtml\Widget\Instance\Edit\Chooser\Container
. Par conséquent, lagetPageLayouts()
fonction retourne maintenant la liste réelle des mises en page déclarées par les différents modules comme prévu. Auparavant, elle ne renvoyait que les mises en page codées en dur. GitHub-31168
- Le fichier
composer.lock
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
à lamagento/module-jwt-framework-adapter
. GitHub-32578
- Des écouteurs passifs ont été ajoutés à la bibliothèque pour améliorer le
fotorama.js
score des mesures phare. 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 dupliqués. Le processus principal se ferme et l’application n’affiche désormais qu’un seul message d’erreur. En outre, les exceptions des processus dupliqués sont désormais gérées lorsqu’elles sont levées dans le processus principal. Auparavant, l’application consignait plusieurs échecs d’indexeur et affichait plusieurs messages d’erreur. GitHub-30622
- L’application ne renvoie plus d’erreur lorsqu’un module externe est ajouté à une classe parente. (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
Magento\Framework\Filesystem\Io\Ftp::ls()
sur un dossier vide renvoie maintenant un tableau vide comme prévu. Auparavant, l’application générait cette exception :Invalid argument supplied for foreach() in vendor/magento/framework/Filesystem/Io/Ftp.php…
. GitHub-31288
- La
update
méthode 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
bin/magento
des commandes en mode production. Auparavant, l’application n’affichait aucun message d’erreur ou affichait des messages dépourvus d’informations. GitHub-32786
- L’objet
ArrayIterator
PHP 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 compléter une commande alors qu’aucun transporteur n’est disponible. À la place, il affiche la page de passage en caisse et le message suivant :
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
$_COOKIE
tableau a également été converti en chaîne. Auparavant, comme chaque cookie était enregistré en tant que contexte distinct, lorsque le nombre de cookies dépassait 50, l’application enregistrait le message suivant :Unable to send the cookie. Maximum number of cookies would be exceeded
. GitHub-31334
Facture
- Lors de la création de factures dans Admin, la case Copie d’e-mail de fonctionne désormais comme prévu. Auparavant, la case à cocher était ignorée si le paramètre global d’envoi des e-mails de facture était activé dans E-mails de vente. Il est désormais cohérent et fonctionne de la même manière que les pages de création d'expédition et d'avoir. GitHub-28511
Galerie de médias
bin/magento media-gallery:sync
échoue comme prévu lors du traitement d’images PNG dépourvues d’informations XMP.
- Les entrées du tableau sont supprimées comme prévu lorsque les
catalog_product_entity_media_gallery
produits associés sont supprimés. GitHub-17727
- Les détails de l’image peuvent désormais être mis à jour dans la galerie multimédia lorsque la minification de 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 principaux MFTF sont décrits dans le Journal des modifications du framework de tests fonctionnels.
- Les commandes
magento indexer:reindex
etcache:flush
, ainsi que 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 éviter l’échec du test. GitHub-31251
- Les tests ont été refactorisés avec
StorefrontCheckQuickSearchStringActionGroup
etStorefrontAssertProductNameOnProductMainPageActionGroup
(groupes d’action existants). GitHub-31251
Tests refactorisés
Les tests suivants ont été restructurés pour améliorer le temps d’exécution :
AddOutOfStockProductToCompareListTest
AdminApplyTierPriceToProductWithPercentageDiscountTest
AdminCheckingCreditMemoTotalsTest
AdminCheckDashboardWithChartsTest
AdminConfigDefaultProductLayoutFromConfigurationSettingTest
AdminCreateInvoiceTest
AdminCreateOrderAddProductCheckboxTest
AdminMassOrdersCancelCompleteAndClosedTest
AdminMassOrdersCancelProcessingAndClosedTest
AdminMassOrdersHoldOnCompleteTest
AdminMassOrdersHoldOnPendingAndProcessingTest
(remplacement des AdminMassOrdersHoldOnPendingAndProcessingTest
obsolètes)
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 ces tests :
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 Grille de produits par SKU et le clic sur la première ligne (afin de réduire le temps d’exécution du test)
AssertLinkActionGroup
AssertStorefrontCartDiscountActionGroup
ClickPlaceOrderActionGroup
SaveCmsPageActionGroup
StorefrontAssertProductNameIsNotOnProductMainPageActionGroup
StorefrontGuestCheckoutProceedToPaymentStepActionGroup
StorefrontHoverProductOnCategoryPageActionGroup
StorefrontSelectCustomizeAndAddToTheCartButtonActionGroup
Groupes d’actions supprimés
- Suppression de la
CliIndexerReindexActionGroup
(ou modification de la valeur) des tests afin d’améliorer le temps d’exécution pour les modulesBackend
,Bundle
,BundleImportExport
,Catalog
,CatalogRule
,CatalogSearch
,Checkout
,Downloadable
,Elasticsearch
,Elasticsearch6
,Indexer
,LayeredNavigation
,LoginAsCustomer
,Newsletter
,Sales
,SalesRule
,Search
,Store
,Swatches
,UrlRewrite
,Weee
etWishlist
.
- Suppression de
CliCacheFlushActionGroup
des modulesCatalog
,CatalogUrlRewrite
,Checkout
,Config
,ConfigurableProduct
,Contact
,Cookie
,CurrencySymbol
,Customer
,Downloadable
,Elasticsearch
,Elasticsearch6
,Fedex
,Indexer
,LayeredNavigation
,LoginAsCustomer
,Msrp
,Multishipping
,Sales
,Swatches
,Translation
,UrlRewrite
,Vault
,Weee
,Wishlist
, et.
Newsletter
- L’application n’envoie plus d’e-mail de newsletter à un client qui a été désabonné de la newsletter entre la création de la file d’attente de la newsletter et l’envoi de la newsletter. GitHub-32116
- L’application respecte 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 à partir de la portée par défaut dans les déploiements multi-magasin. GitHub-31188
- L’appel REST GET
/V1/customers/search
renvoie désormais des informations correctes pour les clients abonnés à plusieurs newsletters. GitHub-31168
- Le statut d’abonnement à la mise en cache a été supprimé du plug-in de newsletter. GitHub-19345
Ordre
- L'application calcule désormais correctement un solde client facturé lors du retour d'un crédit de magasin à 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 effectue désormais le rendu des blocs de paiement sur
frontend
, quelle que soit la zone à partir de laquelle l’e-mail a été envoyé. (La zone actuelle est maintenant émulée commefrontend
avant que le bloc de paiement ne soit rendu.) Auparavant, les blocs de paiement étaient rendus dans la zone à partir de laquelle l’e-mail était envoyé. Par conséquent, que l’e-mail de vente ait été déclenché par 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 désormais le lien d’un produit téléchargeable à l’adresse e-mail spécifiée lors du passage en caisse. Auparavant, lorsqu’un client invité utilisait PayPal Express Checkout et saisissait différentes adresses e-mail pour envoyer la commande et passer en caisse, l’application envoyait le lien de produit téléchargeable à la première adresse.
- L’application affiche désormais une valeur précise 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 modes de paiement est désormais mise à jour comme prévu lorsqu’un client invité modifie l’adresse de livraison d’une commande dans un autre pays au cours 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 passer en caisse une commande PayPal Payflow Pro avec une adresse de livraison contenant des caractères spéciaux. Auparavant, l’application refusait le paiement de ces commandes.
- Les acheteurs sont maintenant redirigés vers la page de succès de la commande après un paiement réussi à l'aide de PayPal. Auparavant, les acheteurs étaient redirigés vers une page vierge en raison d’une perte de données de session.
Performances
- Les performances de la recherche de SKU d’administration 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 converties en nombre, et non en 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 soit en utilisant des variables d’environnement, soit 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 l’échec. Voir Utilisation du mode de verrouillage de l’application pour les processus de réindexation.
Tarification
- L’application met désormais correctement à jour le prix d’un produit avec des prix groupés lorsqu’un acheteur met à jour la quantité du produit sur le storefront. GitHub-32669
- Les produits groupés peuvent désormais être enregistrés lorsque des produits ont été dotés d’un prix de niveau et que
Magento\Framework\Api\ExtensibleDataObjectConverter
est utilisé 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 figurant déjà 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 le stock décimal est inférieur à 1. Auparavant, la quantité de prix de niveau minimal était définie sur 1.
Vidéo du produit
- Vous pouvez désormais utiliser le bouton Ajouter une vidéo (Admin Catalogue > Produits) pour ajouter plusieurs vidéos de manière consécutive. 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, l’activation du mode Plein écran entraînait une pause de la vidéo avant sa désactivation.
- Les boutons fléchés de navigation (Suivant et Précédent) sont désormais visibles comme prévu sur les vidéos des produits storefront.
- Les commerçants 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
Citer
- 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 de factures peut désormais être configuré. Auparavant, l'envoi de factures n'était pas configurable et l'application envoyait toujours une facture après sa création. Les courriels de facture et de commande ont tous deux été envoyés par un observateur. Des observateurs distincts régissent désormais l’envoi des e-mails de commande et de facture. GitHub-27656
Rapports
- Tous les rapports système peuvent désormais être affichés et téléchargés à partir du projet d’infrastructure cloud d’Adobe Commerce. 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 dernière révision dans Admin Reports > Reviews > By Products 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 marchandises (RMA)
- L'attribut
resolution
RMA n'est plus affiché comme requis lorsque la valeur du champ d'attributrequired
est définie sur non.
- Vous pouvez désormais sélectionner plusieurs commandes à renvoyer à partir de l’administrateur. Auparavant, l’application générait 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 maintenant une notification par e-mail aux clients comme prévu après que vous ayez 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 client Admin. Auparavant, l’application vous dirigeait vers la page Admin Tous les clients, et en cliquant sur le bouton Réinitialiser le filtre redirigeait également vers cette page. GitHub-436
Critiques
- Les étoiles d’évaluation de révision de produit sont désormais correctement calculées dans la section Détails de la révision de la page Mon compte .
- Les sections Note de produit moyenne et Note de produit de la page de détails de la révision du produit s’affichent désormais correctement. Auparavant, l’ID de révision n’était pas défini lorsque l’application calculait la note de storefront et le modèle de révision du produit n’était pas correctement rendu.
- Le lien Soyez le premier à examiner ce produit est désormais remplacé comme prévu par un nombre d’examens après l’approbation d’un examen par un administrateur.
- Les administrateurs peuvent désormais trier les avis de produits dans la section Avis des produits de la page d’édition 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 enregistre la révision à partir d’un domaine différent de celui du magasin. GitHub-17510
Récompenses
- Les commerçants peuvent désormais annuler une commande qui a été passée totalement ou partiellement en utilisant des points de récompense après que le client qui a passé la commande a été retiré du système.
- Les marchands peuvent désormais supprimer les points de récompense des règles de prix des paniers. Auparavant, lorsqu’un marchand essayait 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 de la quantité de points de récompense persistait.
- Les points de récompense pour les évaluations de produit sont désormais associés au site web approprié lorsque plusieurs évaluations sont approuvées à partir de la grille Admin Marketing > Évaluations en attente. Auparavant, les points de récompense n’étaient pas affichés sur la vitrine et n’étaient pas liés au site Web concerné dans l’administration.
- L’application met désormais à jour la liste des méthodes de paiement lorsqu’un acheteur qui effectue une commande avec plusieurs adresses coche ou décoche l’option Crédit de la boutique (points de récompense).
Ventes
- Les utilisateurs administrateurs peuvent désormais passer des commandes pour des articles en rupture de stock lorsque le paramètre Les reliquats sont autorisés est activé (Magasins > Configuration > Catalogue > Inventaire > Options de stock de produit). Auparavant, l’application générait une erreur.
- Les acheteurs peuvent désormais trouver une commande sur la page Commandes et retours lorsque le nom de famille se termine par un espace.
- 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 aux taxes sur les produits du catalogue et les remises et qui est admissible pour une 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.
- L’application calcule désormais correctement les totaux d’impôt partiels des mémos de crédit pour les mémos de crédit basés sur une commande ou une facture dans les magasins qui déploient PayPal Payment Pro comme passerelle de paiement. Auparavant, pour les commandes avec plusieurs factures, l’application appliquait la totalité de la taxe de cette commande pour l’annulation partielle de la facture dans la note de crédit.
- L’application ne crée plus de blocages de base de données aléatoires lors de l’envoi d’e-mails de nouvelle commande aux clients. Auparavant, les blocages se produisaient car l’application enregistrait l’objet entier et ses objets associés au lieu des 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 de détail de la commande 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 Expédition de commande affichait Qté expédié en tant que
int
fichier . 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’adresse en double pour un compte client lors de la création d’une commande à partir 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é chargé dans les paramètres Logo pour l’affichage d’impression HTML lorsque les acheteurs impriment une commande à partir de leur compte. Auparavant, l’application affichait le logo LUMA au lieu du logo chargé.
- Le pager des articles de commande sur le storefront fonctionne désormais comme prévu lorsque le nombre d’articles dépasse 20. Auparavant, le pager prenait en compte les produits enfants, et le nombre total était incorrect.
- L'application affiche désormais les symboles de devise corrects pour le sous-total et les valeurs d'expédition et de gestion sur la page Commande et les grilles de page Avoir. 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 à la commande, l’application affichait l’icône de charge tournante et la page était suspendue. GitHub-30265
Règle de vente
- L’application applique désormais correctement les règles de prix de panier avec les conditions La remise de quantité maximale est appliquée à ou Étape de quantité de remise (Acheter X) lorsque plusieurs règles de prix de panier sont appliquées au panier. Auparavant, si une règle de prix de panier avec Remise Qté maximale est appliquée à ou Étape Qté remise (Acheter 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 Qté maximale est appliquée à ou Étape Qté remise (Acheter X) multiplié par le prix du produit.
- Le rapport Coupon reflète désormais précisément l’activité des coupons dans les déploiements où une base de données fractionnée est implémentée.
- Les règles de prix de panier qui contiennent la condition Catégorie N’EST PAS 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
cart
GraphQL 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 identifiants d’élément 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 sur le storefront et l’administrateur. L’application utilise désormais un analyseur différent sans système d’arrêt 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 horodateur, et comme le même analyseur était utilisé au moment de la recherche pour la recherche de mots 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 ne pouvant pas faire l’objet de recherches. Auparavant, si le nom du produit était configuré comme ne pouvant pas faire l’objet de recherches, l’application générait une exception de requête sur les requêtes comportant plusieurs mots.
- Les résultats de recherche incluent désormais 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 fonction de saisie automatique des champs 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 désormais 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 fût).
- La recherche d’un produit en fonction de son SKU complet ou partiel dans la recherche avancée renvoie désormais le produit attendu.
- Les filtres de navigation superposés affichent désormais un nombre précis de produits. Auparavant, les valeurs de nombre de produits d’Elasticsearch n’étaient pas filtrées par les autorisations de 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 désormais 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 et développeuses d’indexer dans Elasticsearch toute donnée supplémentaire associée à un module personnalisé. GitHub-24363
- Les champs de recherche (mini-recherche de formulaire) fonctionnent désormais comme prévu lorsque les suggestions de recherche sont désactivées. GitHub-30584
Expédition
- 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 passage en caisse avec plusieurs adresses.
- L’application affiche désormais le prix d’expédition ajusté correct lorsque certains articles du panier sont qualifiés pour une livraison gratuite. Auparavant, lorsqu’un sous-ensemble d’articles du panier était admissible pour 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 limités à un site web spécifique peuvent désormais créer une expédition 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 à l’affichage de magasin par défaut tentait d’envoyer une commande placée dans un affichage de magasin auquel 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 de règle de prix de panier pertinentes pour déterminer si une commande remplit les conditions pour une livraison gratuite de DHL.
- 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 autre que la devise de base. GitHub-31891
- L’application affiche désormais le sous-total de commande correct lorsqu’un acheteur revient sur la page du panier lors du passage en caisse après avoir quitté la page d’expédition multiple. GitHub-31889
- La modification des informations de facturation lors de la création de la commande administrateur ne modifie plus les informations d’expédition pour les clients ayant des adresses d’expédition et de facturation par défaut différentes. GitHub-31786
- L’application ne décoche plus la case Ajouter des commentaires lorsqu’un acheteur clique sur Obtenir des modes et des tarifs d’expédition et sélectionne un mode 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 Précédent du navigateur pour revenir à la page Sélectionner le mode d’expédition lors du paiement d’une commande comportant plusieurs adresses. Auparavant, l’application affichait une page Sélectionner le mode d’expédition corrompue. GitHub-30268
- La quantité de produits reste désormais inchangée comme prévu après qu’un acheteur a modifié la quantité sur la page Adresse d’expédition multiple et cliqué sur le bouton Précédent du navigateur. GitHub-31956
- Les frais de méthode d’expédition à taux forfaitaire ne deviennent plus nuls lorsqu’une règle de prix de panier est appliquée lors du passage en caisse. 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 auprès de l’administrateur dans un déploiement multisite 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
Évaluation
- La fonction Planifier la mise à jour des blocs 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 du cache Fastly n’étaient pas invalidées et Fastly continuait à diffuser du contenu obsolète.
- L’aperçu d’évaluation des règles de prix du panier est désormais chargé dans le site web approprié lorsqu’il est affecté à plusieurs vues de magasin de sites web. Auparavant, l’aperçu d’évaluation des règles de prix du panier était chargé dans l’affichage par défaut du magasin, quels que soient les sites web affecté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 commerçants peuvent désormais enregistrer un produit téléchargeable avec un exemple lié à partir de la page produit téléchargeable après avoir créé une mise à jour d’évaluation ultérieure 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 identifiants de produit lors de la prévisualisation d’une mise à jour de planning d’une catégorie. Au lieu de cela, le filtre de catégorie est appliqué à la collection de produits afin de créer un tableau temporaire pour les aperçus intermédiaires de la catégorie. Auparavant, l’application insérait tous les produits dans une table temporaire pour l’aperçu de l’évaluation, ce qui dégradait les performances.
- Le module
Magento_SalesRuleStaging
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 planification. Auparavant, si vous affichiez une mise à jour de planification créée avec des conditions, l’application n’affichait pas de conditions ou affichait des conditions avec des données incorrectes.
- La case Utiliser la valeur par défaut d’un produit reste cochée lorsqu’une mise à jour planifiée est décochée avant la mise à jour.
- Les règles de prix de 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 dotés d'attributs non définis. GitHub-461
- Les règles de catalogue fonctionnent désormais comme prévu dans les déploiements multi-sites web avec des magasins situés dans différents fuseaux horaires. Auparavant, l’application appliquait ou désactivait simultanément les règles de catalogue sur tous les sites Web.
- Les prix de niveau 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 mise à jour d’évaluation ultérieure avec une date de fin. Auparavant, l’application n’enregistrait pas le produit et affichait le message suivant :
The downloadable link isn't related to the product. Verify the link and try again
. GitHub-474
Stocker
- L’application ne traite plus une chaîne de
0
comme une valeur vide lors de l’affichage de la page d’accueil d’un magasin. Auparavant, l’application traitait une valeur entière au début d’un chemin de requête en tant qu’ID de magasin, ce qui avait des effets inattendus sur l’optimisation pour les moteurs de recherche.
- Les modules externes pour les
\Magento\Framework\App\ActionInterface
souslib/internal/Magento/Framework/App/Action/Plugin
ont été supprimés afin de 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 maintenant ce message lorsque vous essayez de sélectionner
Website
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 commande.
- L’application affiche désormais les taxes sur les produits fixes (FPT) comme prévu lorsqu’un acheteur retourne à son panier et passe à la caisse après avoir ajouté des produits groupés au panier. GitHub-30250
- L’application pré-remplit désormais les champs de saisie du numéro de TVA pour les adresses de facturation et d’expédition de la section Informations d’adresse de la page de nouvelle commande Admin 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 du client lorsqu’elle
customer/create_account/vat_frontend_visibility
est activée. GitHub-31326
Test
- Les environnements de test ont été mis à niveau vers Redis 6.0.12.
- Supprimé
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 en file d’attente. GitHub-30645
- Suppression de la commande des tests afin d’améliorer le
cache:flush
Catalog
temps d’exécution des modules ,CatalogUrlRewrite
etLoginAsCustomer
. GitHub-31056
- Les paramètres redondants ont été supprimés et POST remplacés par GET si 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 vers le bas de la page (Store > Configurations > Advance > Developer > JavaScript Settings) et les cookies sont tous deux activés :
The store will not work correctly in the case when cookies are disabled
.
- 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 donne désormais la priorité à la configuration de magasin pour une image de logo de magasin par rapport à la configuration de la mise en page. Auparavant, la taille des images de logo était fixe et ne variait pas selon le 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 placés dans un échappement lorsque la traduction en ligne est configurée. Auparavant, la méthode
escapeHtmlAttr
convertissait les crochets en codes d’entité HTML. GitHub-32000
- Les phrases non traduisibles dans l’interface d’administration peuvent désormais être traduites. (Cette demande d’extraction 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 ) peuvent désormais être traduites. GitHub-31211
- Les e-mails de commande envoyés à partir de l’administrateur utilisent désormais les paramètres régionaux du magasin et non pas les paramètres régionaux associés au compte de l’administrateur. GitHub-26521
Interface utilisateur
- Le pied de page Administrateur 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’expédition Admin.
- Le filtre de grille de produits fonctionne désormais correctement lorsque vous utilisez des attributs de date personnalisés pour filtrer des produits et que les paramètres régionaux de l’utilisateur administrateur sont
en_GB
.
- Les gestes de pincement pour zoomer fonctionnent désormais comme prévu dans la loupe de galerie d’images de la page produit 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 lors du zoom de cette page.
- Les problèmes d’alignement avec les onglets de la page d’invitation de l’administrateur (Admin Marketing > 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 temporelle correcte lorsque l’option
timeOnly
du composantdatetime
est définie sur oui. GitHub-23157
- Vous pouvez désormais supprimer une mise à jour de disposition après la création d’un widget dans Admin Content > Widgets. GitHub-29936
- Le bouton Supprimer la mise à jour de la disposition fonctionne désormais comme prévu sur toute disposition que vous avez ajoutée à partir de Admin Contenu > Widgets. Auparavant, ce bouton ne fonctionnait sur aucune mise en page autre que la première 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 du
Magento\Customer\Controller\Account\Edit
contrôleur appliquait la valeur du titre de la 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 des clients
- Modification du client (section Modifier le mot de passe)
- Le client définit le nouveau mot de passe 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 de produits groupé après avoir modifié le jeu d’attributs. GitHub-30911
- L’application affiche maintenant un
DateRange
filtre dans la zone Connecté de la page Connexion du > client. Auparavant, l’application affichait unText
filtre. GitHub-30328
- JavaScript a été supprimé des fichiers de modèle et déplacé dans des fichiers distincts pour réduire les problèmes de rendu sur les pages d’administration. Auparavant, les pages d’administration ne s’affichaient pas correctement dans les déploiements dans lesquels la minification du code 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
dropdownDialog
widget ne charge plus que les blocs déplaçables et redimensionnablesjquery-ui
dont il a besoin. Auparavant, il chargeait de grandes quantités de code inutile, 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 une fois que les produits ont été affectés à un site web par une 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 maintenant 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 d’URL.
- Les réécritures d’URL de produit sont maintenant supprimées comme prévu lorsqu’un produit est supprimé d’un site Web. GitHub-24184
- Ajout d’une
main_table
référence à lastore_id
dans laaddStoreFilter
fonction de laapp/code/Magento/UrlRewrite/Model/ResourceModel/UrlRewriteCollection.php
collection. Auparavant, des problèmes se produisaient chaque fois qu’unjoin
était ajouté à la collection sur une table qui contient également unestore_id
colonne. GitHub-31853
- Le
PUT /V1/products/:sku
point de terminaison REST régénère maintenant les réécritures d’URL du produit comme prévu. Auparavant, le point de terminaison régénérait les valeurs du produiturl_key
, mais pas les réécritures d’URL. GitHub-30316
Utilisateur
- Vous pouvez désormais enregistrer un nouveau rôle utilisateur effectif (Système d’administration > autorisations > rôles utilisateur) avec l’ensemble de l’arborescence sélectionnée à l’exclusion (
Edit Product Design
Catalogue > Inventaire > Produits > Modifier laCatalog
conception du produit). Auparavant, l’application n’enregistrait pas les modifications apportées au produit 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 maintenant le modèle d’e-mail personnalisé approprié lors de la génération d’e-mails pour les nouveaux administrateurs. Auparavant, l’application utilisait l’ancien modèle par défaut, qui omettait les nom et prénom de l’administrateur.
- L’application utilise maintenant le modèle de courrier électronique approprié lors de l’envoi de courrier électronique aux 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 disposition. Auparavant, l’application modifiait le thème affecté à Luma après l’enregistrement des modifications de disposition, quel que soit le thème affecté à la page.
- Les administrateurs disposant de rôles restreints peuvent désormais ajouter, mettre à jour ou dupliquer les pages auxquelles ils ont accès et qui sont affectées à un nœud de hiérarchie. Auparavant, l’application générait une erreur fatale dans ces conditions.
Vidéo
- Les vidéos sont désormais disponibles dans la galerie de produits comme prévu lorsque le regroupement JavaScript avancé est activé et utilisé. GitHub-32501
- Les vidéos YouTube pour les produits simples qui appartiennent à un produit configurable fonctionnent désormais comme prévu. Auparavant, les images étaient classées par identifiant plutôt que par position. Par conséquent, certaines vidéos ont été traitées comme des images. GitHub-29690
Marchandiseur visuel
- Les performances du chargement des pages de catégories d’administration avec Visual Merchandiser ont été améliorées. Le chargement des pages de catégorie Admin ne génère plus de requêtes de base de données volumineuses.
Framework d’API web
- L’API Catalog met désormais correctement à jour les valeurs d’option personnalisées d’un produit en ajoutant de nouvelles valeurs et en supprimant les anciennes. Auparavant, l’API ne supprimait pas les anciennes valeurs.
- La
/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 de site web
- Les acheteurs sont maintenant redirigés vers la page à laquelle ils tentaient d’accéder avant qu’on ne leur demande de se connecter. Auparavant, dans les déploiements où les restrictions de site web étaient activées et le mode de restriction 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 disposition d’un widget. Auparavant, lorsqu’un widget disposait de plusieurs mises à jour de disposition, 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 du nœud de hiérarchie CMS dans TinyMCE effectue désormais le rendu des liens de hiérarchie comme prévu lorsque le champ Ancrer le texte personnalisé 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’élément pour le produit 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 le mauvais prix de produit et n’affichait pas de lien vers le fichier chargé.
- Le nombre total de produits d’une liste de souhaits pour un client avec plusieurs listes de souhaits correspond désormais au nombre d’éléments de 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 Tout sélectionner de la section Produits associés. GitHub-32274
Problèmes connus
Problème : erreur JavaScript lorsque reCAPTCHA est désactivé. Si reCAPTCHA est désactivé pour l’extraction, l’extraction se poursuit, mais l’application affiche une erreur Uncaught TypeError
dans le journal de la console. Ce problème sera corrigé dans une version ultérieure.
Problème : Erreur de politique 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 du storefront ne sont pas affectées.
Problème : Anomalies de l’affichage des montants des cartes-cadeaux avec le crédit PayPal. 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 échelonnés. Un correctif 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 fonctionnalité Ajouter des produits.
Problème : GraphQL category
et categoryList
les requêtes ignorent les autorisations de catégorie qui déterminent si les catégories d’un catalogue partagé sont masquées ou exposées. La vitrine 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 souhaitons saluer leurs contributions à cette version.
L’équipe d’ingénierie de communauté Magento Contributors tient à jour une liste des principaux contributeurs individuels et partenaires par mois, trimestre et année. Depuis cette page Contributeurs, vous pouvez suivre les liens vers leurs relations publiques fusionnées sur GitHub.
Contributions des partenaires
Le tableau suivant présente les contributions des partenaires. Ce tableau répertorie le partenaire qui a contribué à 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 des contributeurs individuels
Le tableau suivant identifie 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 requise
Notre pile technologique est construite 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 de 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 la progression, de journalisation et de test. Pour obtenir des instructions d’installation, consultez Installer 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.