Notes de version de Magento Open Source 2.4.5

Notes de version de Magento Open Source 2.4.5

Magento Open Source apporte des améliorations à la qualité de la plateforme, aux moyens de paiement, aux performances de mise en cache GraphQL et à l’accessibilité. Cette version inclut des mises à jour des modules Google intégrés.

Cette version comprend plus de 290 corrections et améliorations de qualité.

Les versions peuvent contenir des modifications non rétrocompatibles (BIC). Magento Open Source 2.4.5 contient des modifications non rétrocompatibles. Pour les consulter, voir la référence BIC. (Les principales modifications non rétrocompatibles sont décrites dans les points clés BIC. Toutes les versions n’introduisent pas de BIC majeures.)

Magento Open Source apporte des améliorations à la qualité de la plateforme, aux moyens de paiement, aux performances de mise en cache GraphQL et à l’accessibilité. Cette version inclut des mises à jour des modules Google intégrés.

Cette version comprend plus de 290 corrections et améliorations de qualité.

Les versions peuvent contenir des modifications non rétrocompatibles (BIC). Magento Open Source 2.4.5 contient des modifications non rétrocompatibles. Pour les consulter, voir la référence BIC. (Les principales modifications non rétrocompatibles sont décrites dans les points clés BIC. Toutes les versions n’introduisent pas de BIC majeures.)

Autres informations sur la version

Bien que le code de ces fonctionnalités soit livré avec les versions trimestrielles du cœur de Magento Open Source, plusieurs de ces projets sont également publiés de manière indépendante. Les corrections de bugs de ces projets sont documentées dans les informations de version propres à chaque projet, disponibles dans leur documentation respective.

Points forts de Magento Open Source 2.4.5

Voici les points forts de cette version.

Améliorations de sécurité

Cette version comprend 20 correctifs de sécurité et améliorations de la sécurité de la plateforme. Ce correctif de sécurité a été rétroporté dans Magento Open Source 2.4.4-p1 et Magento Open Source 2.3.7-p4.

Aucune attaque confirmée liée à ces problèmes n’a été signalée à ce jour. Toutefois, certaines vulnérabilités pourraient être exploitées pour accéder aux informations des clients ou prendre le contrôle de sessions administrateur. La plupart de ces problèmes exigent qu’un attaquant obtienne d’abord un accès à l’Admin. Nous vous rappelons donc de prendre toutes les mesures nécessaires pour protéger votre Admin, notamment :

  • la liste d’autorisation d’adresses IP
  • l’authentification à deux facteurs
  • l’utilisation d’un VPN
  • l’utilisation d’un emplacement unique plutôt que /admin
  • une bonne hygiène des mots de passe

Consultez le bulletin de sécurité Adobe pour les dernières informations sur ces problèmes corrigés.

Autres améliorations de sécurité

Les améliorations de sécurité de cette version renforcent la conformité aux dernières bonnes pratiques de sécurité, notamment :

  • La prise en charge de reCAPTCHA a été ajoutée aux formulaires de partage de liste d’envies, de création de compte client et de carte cadeau.

  • Des ressources ACL ont été ajoutées à Inventory.

  • La sécurité des templates d’Inventory a été renforcée.

  • Le filtre MaliciousCode a été mis à niveau pour utiliser la bibliothèque HtmlPurifier.

Améliorations de la plateforme

Magento Open Source 2.4.5 prend désormais en charge

  • Composer 2.2

  • TinyMCE (5.10.2). Les versions antérieures de TinyMCE (v5.9.2 ou antérieures) permettaient l’exécution de JavaScript arbitraire lors de la mise à jour d’une URL spécialement conçue ou d’une image avec une URL spécialement conçue.

  • jQueryUI (1.13.1)

  • PHPStan (^1.5.7 avec contrainte) GitHub-35315

Le schéma de l’intégration DHL a été mis à jour de la v6.0 à la v6.2. Cette mise à niveau n’entraîne aucun changement de comportement du produit.

Les bibliothèques JavaScript obsolètes ont été mises à jour vers leurs dernières versions et les dépendances obsolètes ont été supprimées. Ces modifications sont rétrocompatibles.

Mises à jour des dépendances Composer

Les dépendances Composer suivantes ont été mises à jour vers les dernières versions avec contrainte :

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

Les dépendances laminas/laminas-session, laminas/laminas-text et laminas/laminas-view ont été supprimées.

Autres mises à niveau et remplacements

  • Le schéma de l’intégration DHL a été mis à jour de la v6.0 à la v6.2.

  • L’URL de passerelle par défaut pour l’expédition USPS utilise désormais https au lieu de http.

  • La bibliothèque Froogaloop a été remplacée par la bibliothèque Vimeo Player.js (2.16.4).

  • La bibliothèque grunt-eslint (NPM) a été mise à niveau vers la dernière version.

  • Les bibliothèques jQuery Storage ont été remplacées par julien-maurel/js-storage.

  • Les outils d’analyse statique du code php-cs-fixer et phpcs sont désormais compatibles avec PHP 8.x.

  • Dépendance glob.js (mise à niveau avec la contrainte ~7.2.0)

  • Dépendance serve-static.js (mise à niveau avec la contrainte ~1.14.2)

  • Dépendance underscore.js (NPM) (1.14.2)

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

  • La bibliothèque jquery/jquery-cookie a été remplacée par js-cookie/js-cookie.

  • Les bibliothèques jarallax.js et jaralax-video.js ont été mises à jour pour utiliser la dernière version de l’API REST de Vimeo.

Mises à jour d’accessibilité

Cette version s’est concentrée sur une expérience vitrine Venia (PWA) plus perceptible, utilisable, compréhensible et robuste. Ces améliorations comprennent :

  • Le résumé des résultats de recherche est désormais annoncé aux utilisateurs de lecteurs d’écran
  • Les lecteurs d’écran sont désormais informés du chargement d’une nouvelle page
  • Le contraste et l’accessibilité au clavier ont été améliorés

Google Analytics

Google a mis à jour les mécanismes de suivi et d’intégration d’AdWords et d’Analytics dans les applications web grâce à l’intégration avec GTag. Cette intégration des fonctionnalités Google dans les pages des sites élargit les possibilités de suivi et de gestion du contenu via les services Google. Adobe Commerce dispose d’un ensemble de modules intégrés, dont Google AdWords, Analytics, Optimizer et TagManager, qui s’appuient sur l’ancienne API pour l’intégration avec les services Google. Dans cette version, nous avons réimplémenté cette intégration selon l’approche GTag.​ Voir Migrer d’analytics.js vers gtag.js (Universal Analytics).

GraphQL

Les améliorations de performance de GraphQL comprennent :

  • Les développeurs et administrateurs bénéficient d’une reconstruction plus rapide du schéma GraphQL unifié de la vitrine lors du déploiement ou de la modification d’attributs en production. Les acheteurs profitent également de pages nettement plus rapides lorsque le schéma GraphQL doit être reconstruit pour une raison quelconque.

  • Ajout de la possibilité d’exploiter la date/heure d’expiration du jeton d’autorisation grâce aux JSON Web Tokens (JWT) dans l’API GraphQL.

  • La commande bin/magento config:set graphql/session/disable 1 permet aux marchands de désactiver complètement la création de cookies de session pour toutes les opérations GraphQL. Par défaut, Magento Open Source crée ces cookies et s’appuie sur eux pour l’autorisation, ce qui affecte les performances. Désormais, nous recommandons d’utiliser les jetons comme unique forme d’autorisation pour les requêtes GraphQL. Nous déconseillons d’utiliser les cookies de session seuls ou en combinaison avec des jetons d’autorisation. Voir Autorisation GraphQL.

  • Les cookies de session sont désormais lancés dans les opérations GraphQL via des proxys de classe, uniquement lorsque c’est nécessaire.

  • L’utilisation des sessions a été supprimée des processeurs d’en-têtes http de GraphQL, tels que store, customer ou currency.

Consultez le guide du développeur GraphQL pour plus de détails sur ces améliorations.

Inventory

La sécurité des templates d’Inventory a été renforcée.

Page Builder

Page Builder v.1.7.2 est compatible avec Magento Open Source 2.4.5.

La disposition en colonnes de Page Builder comprend les améliorations suivantes :

  • Les colonnes sont désormais exposées, ce qui permet aux utilisateurs de contrôler leurs paramètres sur la vitrine.

  • Le redimensionnement des colonnes prend désormais en charge le retour à la ligne déclenché par les actions de l’utilisateur.

Paiements

Apple Pay est désormais disponible pour tous les marchands dont le déploiement a Payment Services activé. Ce moyen de paiement ne demande pas aux acheteurs de saisir les informations de leur carte de crédit ou de débit. Apple Pay est disponible sur la page produit, le mini-panier, le panier et le processus de paiement. Les marchands peuvent activer ou désactiver cette fonctionnalité.

PayPal

  • Les marchands en Espagne et en Italie peuvent désormais proposer PayPal Pay Later à leurs acheteurs.

  • Des aperçus des boutons PayPal, Credit et Pay Later sont désormais disponibles dans l’Admin pour les pages de paiement, mini-panier, panier et produit. Ces aperçus montrent à quoi ressembleront les boutons une fois activés et affichés sur la vitrine.

Braintree

  • Braintree a abandonné l’intégration de protection contre la fraude KOUNT. Elle a été retirée de la base de code de Magento Open Source.

  • L’option Toujours demander 3DS a été ajoutée à l’Admin.

PWA Studio

PWA Studio v.12.5.x est compatible avec Magento Open Source 2.4.5.

Les nouvelles fonctionnalités de cette version comprennent :

  • Les données de comportement des acheteurs sont collectées sur la vitrine PWA Studio pour les services d’analyse web. Les marchands peuvent désormais s’abonner à ces événements et les étendre selon leurs besoins.

  • Les marchands peuvent désormais sélectionner un service à déployer depuis l’Admin (Google Tag Manager).

Pour les améliorations et corrections de bugs, voir les versions de PWA Studio. Voir Compatibilité des versions pour la liste des versions de PWA Studio et des versions du cœur de Magento Open Source compatibles.

Problèmes corrigés

Nous avons corrigé des centaines de problèmes dans le code du cœur de Magento Open Source 2.4.5.

Installation, mise à niveau, déploiement

  • Vous pouvez désormais renommer un data patch et ajouter l’ancien nom de classe comme alias dans la table patch_list de la base de données. Le système vérifie désormais si les alias de data patch existent déjà dans la base avant d’appliquer le patch. Auparavant, Magento Open Source générait une erreur dans ces conditions.
  • Magento Open Source ne génère plus d’exception lorsque vous essayez de remplacer l’URL de l’Admin par une URL personnalisée depuis l’Admin. Auparavant, après avoir modifié l’URL de l’Admin, il était impossible de se connecter. GitHub-35416
  • Les marchands peuvent désormais mettre à niveau avec succès un déploiement Magento Open Source 2.4.2 utilisant Klarna vers Magento Open Source 2.4.3. GitHub-33760
  • Le chemin vers Magento Open Source Analytics n’est plus codé en dur. Auparavant, ce chemin codé en dur provoquait des conflits lorsque plusieurs instances de Magento Open Source étaient installées sur un même serveur. GitHub-29373

Accessibilité

  • Le bouton Panier fournit désormais une indication programmatique ou textuelle de son état. Les utilisateurs de lecteurs d’écran sont informés qu’un clic sur ce bouton déploiera d’autres contenus, ou que le contenu associé est déployé ou replié. Auparavant, ce bouton ne fournissait aucune indication programmatique ou textuelle de son état.
  • Les éléments textuels ou images de texte des options de carte de crédit dans les informations de paiement respectent désormais le rapport de contraste minimal de 4,5:1 exigé par les WCAG 2.0 pour le texte standard de 18 pt (24 px) ou de 14 pt (19 px) en gras. Auparavant, ils ne respectaient pas ce rapport de contraste.
  • Les indicateurs de focus personnalisés de Carnet d’adresses > Communication > Informations du compte offrent désormais un rapport de contraste d’au moins 3:1 par rapport à la couleur d’arrière-plan.
  • Le texte des boutons Filtrer et Trier respecte désormais le rapport de contraste minimal de 4,5:1 exigé par les WCAG 2.0 pour le texte standard de 18 pt (24 px) ou de 14 pt (19 px) en gras. Auparavant, les boutons de navigation des carrousels ne respectaient pas ces exigences minimales de contraste.
  • Les lecteurs d’écran n’annoncent plus qu’une seule fois le mot « Venia » lors de la navigation vers les en-têtes et pieds de page de Venia. Auparavant, le mot était annoncé deux fois de suite.
  • Les boutons qui ouvrent des listes déroulantes fournissent désormais aux lecteurs d’écran des informations sur leur état déployé ou replié ainsi que des noms accessibles.
  • Les utilisateurs de lecteurs d’écran sont informés lorsqu’une nouvelle page est affichée. Auparavant, le changement de titre de page n’était pas annoncé.

Adobe Stock

  • Les utilisateurs peuvent désormais se déconnecter d’Adobe Stock sans problème.

Produits groupés

  • Vous pouvez désormais utiliser le point de terminaison PUT /V1/products pour mettre à jour les attributs de prix d’un produit pour un site web spécifique. Auparavant, si certains attributs du produit étaient redéfinis pour une store view donnée, il était impossible de mettre à jour un attribut de prix de ce produit dans cette même store view.
  • Magento Open Source calcule désormais correctement le total du panier pour un produit groupé lorsque la règle Product Subselect est appliquée.

Cache

  • Le cache pleine page n’apparaît plus comme désactivé dans l’Admin lorsque le cache de Magento Open Source est vidé et que use_stale_cache est activé.
  • Les marqueurs de déploiement New Relic fonctionnent désormais comme prévu lorsque le cache est vidé. GitHub-32649

Panier et paiement

  • La fenêtre contextuelle de recherche d’adresse à l’étape de facturation du processus de paiement ne provoque plus d’erreurs DOM.
  • La mutation addProductsToCart fonctionne désormais correctement avec plusieurs produits. Auparavant, cette requête renvoyait le premier produit avec un sous-total exact, mais un sous-total de 0 pour les autres produits.
  • Les exceptions d’autorisation sont désormais gérées pour les produits restreints ajoutés par SKU. Les acheteurs reçoivent désormais un message approprié sur la vitrine et le champ de quantité du tableau d’erreurs est désactivé. Auparavant, Magento Open Source générait une exception de ce type : There has been an error processing your request.
  • La requête SQL qui met à jour les devis concernés après la désactivation d’une règle de prix panier a été optimisée pour éviter de verrouiller toute la table des devis.
  • Les acheteurs bénéficiant du partage global de compte n’ont plus besoin de se reconnecter sur un site secondaire d’un déploiement multisite lorsque le paiement en tant qu’invité est désactivé. Les données client sont désormais chargées lorsque l’acheteur accède au sous-domaine. Il n’est plus invité à se reconnecter et le contenu précédent de son panier s’affiche.
  • Les valeurs des listes déroulantes d’adresses dans le processus de paiement ne changent plus pour les autres articles d’un devis lorsqu’un article d’adresse à quantité unique est supprimé lors d’un paiement multi-adresses. Auparavant, lorsqu’un produit était retiré d’un devis lors d’un paiement multi-adresses, la valeur de la liste déroulante d’adresse revenait à la valeur par défaut pour tous les produits.
  • La requête cart ne renvoie plus de réponses nulles lorsqu’un produit est en rupture de stock. Un nouvel élément errors contenant le message d’erreur a été ajouté à la réponse. Auparavant, lorsque vous exécutiez une requête avec un produit en rupture de stock, Magento Open Source affichait une valeur null dans la section items de la réponse. Voir la requête cart.
  • Les modes de livraison sont désormais disponibles comme prévu lorsqu’un acheteur invité crée un compte après avoir ajouté un produit à son panier et avant de passer au paiement. Auparavant, lorsqu’un invité ajoutait un produit au panier avant de créer un compte, aucun mode de livraison n’était disponible lors du paiement. Les modes de livraison n’apparaissaient qu’après l’ajout d’autres produits au panier.
  • Les acheteurs peuvent désormais ajouter des produits à leur panier lorsqu’aucune option n’est sélectionnée dans le champ Allow Countries.
  • Le contenu du panier et l’état de connexion sont désormais rechargés comme prévu après l’expiration d’une session lorsque Enable Persistence est réglé sur Yes. GitHub-35182
  • Les sous-totaux du mini-panier sont désormais mis à jour correctement lorsqu’un acheteur passe de la page de livraison à la page du panier dans le processus de paiement d’une commande avec plusieurs adresses de livraison. Auparavant, le sous-total était doublé.
  • Le mini-panier affiche désormais les produits ajoutés précédemment après l’expiration d’une session lorsque Enable Persistence est activé. GitHub-35183
  • Les marchands peuvent désormais créer un avoir dans lequel Refund Shipping (Incl. Tax) est fixé à -0.01 et peuvent désormais fixer ce montant à 0. Auparavant, l’avoir ne pouvait pas être créé dans ces conditions.

Règle de prix panier

  • La portée d’attribut Parent Only est désormais correctement utilisée dans la condition de la règle panier.

Catalogue

  • Les clés d’URL des produits restent désormais inchangées lors de la mise à jour du nom d’un produit via PUT /V1/products/ pour une store view. Auparavant, une nouvelle clé d’URL était générée à partir du nouveau nom du produit et attribuée à celui-ci, écrasant la clé d’URL de cette store view.
  • L’ajout d’un produit à une catégorie depuis le widget produit de Page Builder configuré en mode carrousel ne déclenche plus de rechargement de la page.
  • Les produits réglés sur Not Visible Individually n’apparaissent plus dans les résultats de la recherche avancée du catalogue.
  • Les attributs des produits groupés dynamiques sont désormais mis à jour correctement sur la page de mise à jour massive des attributs. Auparavant, l’attribut Dynamic SKU restait réglé sur Yes alors qu’il avait été désactivé sur la page de mise à jour massive.
  • Les règles de catalogue sont désormais correctement appliquées grâce aux indexeurs incrémentiels plutôt qu’à une réindexation complète.
  • Vous pouvez désormais basculer sans problème entre les vues liste et grille des listes de produits sur plusieurs pages. Auparavant, lorsque vous alliez à la dernière page d’une liste de produits en vue liste avant de passer en vue grille, Magento Open Source affichait cette erreur : Unfortunately there are no products in this category on our website currently.
  • Les rapports du journal des actions de l’Admin affichent désormais comme prévu les ID de produits mis à jour et les informations de statut actualisées.
  • Les triggers sont désormais restaurés comme prévu sur la table catalogrule_product_price après une réindexation complète. Auparavant, les triggers étaient supprimés de la table catalogrule_product_price après une réindexation complète de catalogrule_rule ou de catalogrule_product.
  • Les règles de catégorie utilisées pour affecter des produits aux catégories ne changent plus de façon aléatoire.
  • Les catégories ne peuvent plus être mises à jour globalement par un administrateur dont l’accès est restreint à une portée. Auparavant, lorsque plusieurs sites utilisaient la même catégorie mais des produits différents, et qu’un administrateur limité à une seule boutique modifiait les produits de la catégorie, la sélection de produits changeait aussi pour les autres boutiques.
  • La page produit affiche désormais le bon prix lorsqu’une devise autre que celle par défaut est utilisée pour une locale donnée. Auparavant, les nombres n’étaient pas localisés comme prévu sur la vitrine.
  • Le même message d’erreur est désormais affiché par l’API et sur la vitrine lorsqu’on tente de récupérer les prix dégressifs d’un produit comportant des enregistrements en double. Auparavant, PUT /V1/products/tier-prices renvoyait un message d’erreur incorrect.
  • Magento Open Source affiche désormais des messages d’erreur de validation lorsque vous essayez d’ajouter une clé d’URL produit se terminant par un tiret. Une infobulle explicative est également disponible.
  • Le nouveau champ ConfigurableWishlistItem.configured_variant remplace le champ ConfigurableWishlistItem.child_sku. Ce dernier provoquait une erreur interne lorsque la liste d’envies d’un client contenait un produit configurable non configuré.
  • Les réécritures d’URL ne sont désormais générées que pour les boutiques sélectionnées lors de la mise à jour massive des attributs visant à modifier la visibilité des produits. Auparavant, la mise à jour massive des attributs créait une réécriture d’URL pour la mauvaise boutique.
  • Lorsque le paramètre Synchronize widget products with backend storage est activé, Magento Open Source ajoute les données des produits récemment consultés dans la table catalog_product_frontend_action de la base de données, en incluant l’ID du client ou du visiteur. La section recently_viewed_product de la réponse est désormais vide si l’ID client et l’ID visiteur sont nuls. Ainsi, lorsque la requête Ajax customer/section/load est envoyée, Magento Open Source peut filtrer correctement les produits récemment consultés selon l’ID du client ou du visiteur. Auparavant, la réponse incluait toutes les données de la table catalog_product_frontend_action, faute de vérification d’un ID client ou visiteur vide.
  • Les administrateurs peuvent désormais modifier les options d’un produit configurable dans le panier d’un acheteur depuis le panneau coulissant de l’Admin. Auparavant, ce panneau ne fonctionnait pas correctement.
  • Le cache de page est désormais vidé comme prévu pour le produit configurable parent lorsque des modifications d’un produit enfant sont enregistrées. Auparavant, le cache n’étant pas vidé, les modifications n’apparaissaient pas sur la page du produit configurable de la vitrine. GitHub-34508
  • Les listes de produits s’affichent désormais correctement dans l’Admin. Auparavant, la liste de produits ne s’affichait pas et Magento Open Source affichait cette erreur : Item (Magento\Catalog\Model\Product\Interceptor) with the same ID "<ID>" already exists. GitHub-33145
  • Les prix des produits sont désormais identiques sur la page produit et dans la recherche de la vitrine dans les déploiements multi-boutiques après le passage de la portée des prix du catalogue de website à global. Auparavant, la page des résultats de recherche du catalogue affichait le prix global et la page produit le prix website. GitHub-34074
  • La navigation à facettes affiche désormais comme prévu les produits aux prix les plus élevés lorsque Price Navigation Step Calculation est réglé sur Manual.
  • Vous pouvez désormais modifier le nombre de produits affichés par page dans une catégorie lorsque Remember Category Pagination est activé. Auparavant, le form_key du cookie et le form_key de l’interface différaient, et Magento Open Source affichait cette erreur : Invalid Form Key. Please refresh the page.
  • L’indexeur EAV traite désormais les ID de produits en tant que type int afin d’éviter d’éventuels problèmes de performance.
  • Un nouveau cache produit est désormais généré correctement après l’ajout à un produit d’une nouvelle image dont le nom contient « . », l’enregistrement du produit et le nettoyage du cache des images. GitHub-32699
  • Magento Open Source affiche désormais comme prévu un message d’erreur lorsque vous essayez de créer un attribut depuis la page produit sans remplir le champ Admin. GitHub-33099

  • Les notes des produits sont désormais correctes sur toutes les listes de produits du catalogue lorsque la page d’accueil contient plusieurs listes. GitHub-33867

Produits configurables

  • Magento Open Source affiche désormais le bon prix d’un produit configurable avec une option sélectionnée après modification de sa quantité sur la page produit. Auparavant, le prix revenait à sa valeur initiale après le changement de quantité.
  • La requête products récupère désormais des prix de produits configurables qui reflètent fidèlement le paramètre de configuration Display Out Of Stock. Auparavant, la requête ne renvoyait pas des prix exacts.
  • Les options configurables sont désormais liées aux produits configurables créés dans l’Admin via POST /V1/configurable-products/configurable1/child.
  • Les attributs à sélection multiple sont désormais enregistrés correctement lors de la modification d’un produit. Auparavant, Magento Open Source enregistrait l’option par défaut pour les attributs non sélectionnés en plus des attributs sélectionnés lors de l’enregistrement d’un produit.
  • Magento Open Source affiche désormais comme prévu les attributs configurables lors de la création d’attributs select globaux via un script de patch. Auparavant, les attributs globaux éligibles étaient masqués.
  • La mutation addConfigurableProductsToCart peut désormais être utilisée pour ajouter des produits configurables avec options personnalisées. Auparavant, Magento Open Source générait cette erreur : Magento 2.3.4 graphql Notice: Undefined index: option_value in /var/www/html/mg234/vendor/magento/module-configurable-product-graph-ql/Model/Resolver/ConfigurableCartItemOptions.php on line 62. GitHub-28860

  • Vous pouvez désormais recommander des produits configurables comportant des options personnalisées facultatives. Auparavant, les tentatives de nouvelle commande échouaient et affichaient cette erreur : Some of the selected options are not currently available. GitHub-35409

  • La mutation addConfigurableProductsToCart fonctionne désormais comme prévu avec plusieurs produits. Auparavant, des informations produit incorrectes ou un message d’erreur invalide étaient renvoyés. GitHub-30948

Client

  • Magento Open Source affiche désormais correctement les attributs système EAV prédéfinis sur la vitrine en fonction du paramètre du site web. Auparavant, les attributs client de niveau site activés pour un site et désactivés pour un autre étaient affichés comme activés pour les deux sites.

Produits téléchargeables

  • Vous pouvez désormais supprimer les liens et fichiers d’exemple d’un produit téléchargeable. GitHub-31887

E-mail

  • Les e-mails envoyés par le système parviennent désormais aux destinataires dont l’adresse e-mail contient « .- ».
  • Les clients reçoivent désormais les e-mails de rappel concernant leurs paniers abandonnés selon le calendrier prévu. La nouvelle fonction SQL TIMESTAMPDIFF(DAY, ,) remplace la fonction TO_DAYS() et calcule l’écart entre les horodatages en tenant compte de la date et de l’heure. Auparavant, les e-mails de rappel n’étaient pas envoyés selon le calendrier en raison d’un calcul erroné entre deux valeurs date-heure : celle de l’abandon du panier (dans n’importe quel fuseau horaire) et l’heure du serveur (UTC).
  • Magento Open Source affiche désormais un message d’erreur sur la page Livraison lorsqu’un acheteur saisit une adresse e-mail au format invalide puis clique sur Place Order. Auparavant, le message d’erreur s’affichait sur la page Paiement. [GitHub-33590](https://github.com/magento/magento2/issues/33590

Frameworks

  • La commande bin/magento setup:config:set n’écrase plus les préfixes d’ID de cache déjà définis dans app/etc/env.php.
  • La commande bin/magento setup:static-content:deploy -s compact inclut désormais correctement les styles des thèmes enfants. Auparavant, les fichiers CSS du thème étaient absents de la vitrine après le déploiement.
  • Un nouveau sniff a été ajouté pour vérifier si des barres obliques de fermeture sont utilisées dans les éléments void.
  • Magento Open Source ne génère plus d’erreur SQL après l’affectation d’une nouvelle source à un produit et la modification de sa quantité. GitHub-35262
  • L’ordre de tri des attributs fonctionne désormais comme spécifié dans le fichier di.xml après une mise à jour.
  • La fonction updateCartCurrency définit désormais une chaîne au lieu d’un objet dans l’objet panier. Auparavant, Magento Open Source ne chargeait pas un devis via getQuote, car la fonction updateCartCurrency définissait un objet au lieu d’une chaîne dans l’objet panier. GitHub-34199
  • Les avis de dépréciation n’apparaissent plus dans les tests unitaires à cause de\DateTimeFormatter::formatObject(). Cette méthode fonctionne désormais correctement avec des valeurs numériques pour $format.
  • Magento Open Source n’affiche plus d’erreur preg_replace() dans l’Admin. Le troisième argument ($subject) est désormais de type array|string au lieu de bool.
  • La méthode isFreeShipping renvoie désormais un entier plutôt qu’un booléen.GitHub-35164
  • Magento Open Source ne génère plus l’erreur suivante lorsque vous créez un plugin pour une méthode quelconque de la classe vendor/magento/module-backend/Model/Menu.php : Error: Call to undefined method ReflectionUnionType::getName(). GitHub-35292
  • Magento Open Source renvoie désormais une erreur 404 au lieu d’une erreur 500 lorsque vous accédez à /checkout/sidebar/updateItemQty/?item_qty=error sur la vitrine. Auparavant, l’erreur suivante était générée : Warning: A non-numeric value encountered in /vendor/magento/module-checkout/Controller/Sidebar/UpdateItemQty.php on line 69. GitHub-34380
  • Magento Open Source ne déclenche plus l’erreur trim(): Passing null to parameter #1 ($string) of type string is deprecated lorsque la connexion AMPQ est configurée sans SSL.
  • Correction de la définition de base de données longblog en long blob. GitHub-35108
  • Les textes Knockout contenant des apostrophes droites sont désormais traduisibles. GitHub-34319
  • Une TypeError dans magento2/app/code/Magento/Security/Model/AdminSessionsManager.php a été corrigée en passant de int à string. GitHub-34415
  • .htpasswd a été ajouté aux emplacements interdits dans le fichier de configuration nginx. GitHub-35150
  • Le temps de chargement des pages de liste de produits par catégorie a été amélioré grâce à l’ajout de Magento_Ui/js/core/app en tant que deps dans app/code/Magento/Ui/view/frontend/requirejs-config.js. GitHub-34847
  • La méthode ProductRepository.php:get renvoie désormais les clés de cache une seule fois. Auparavant, elles étaient renvoyées deux fois. GitHub-34958
  • Ajout d’un message d’erreur à une nouvelle exception créée dans le gestionnaire d’exceptions des tâches cron. GitHub-34941
  • Les fichiers ReadMe des modules GraphQl-GroupedProductGraphQl ont été mis à jour. GitHub-34951
  • Les pages d’impression de commande, de facture et d’avoir de la vitrine n’affichent plus le logo Luma par défaut à la place du logo défini pour le site. GitHub-34942

Corrections générales

  • Définir la taille maximale de session à 0 (Admin Store > Settings > Configuration - Advanced) ne déconnecte plus l’administrateur. GitHub-35312
  • Les paramètres de configuration des attributs d’adresse client sont désormais chargés correctement en fonction du site web auquel le client est rattaché, lorsque vous ajoutez depuis l’Admin une nouvelle adresse client rattachée à un site web autre que celui par défaut.
  • Magento Open Source ne génère plus d’exception lorsque vous ajoutez un produit groupé (bundle) via Page Builder.
  • Vous pouvez désormais créer un compte client sur un appareil iOS avec l’apostrophe typographique (’) dans le prénom, le deuxième prénom ou le nom. Auparavant, seule l’apostrophe droite était autorisée, et l’utilisation de l’apostrophe typographique par défaut d’iOS 11+ provoquait l’erreur Name is not valid!.
  • La requête products renvoie désormais des informations produit qui reflètent fidèlement la configuration « Show Related Products ». Les champs related_products, upsell_products et crosssell_products de la ProductInterface GraphQL sont désormais résolus respectivement selon les configurations Show Related Products, Show Upsell Products et Show Cross-Sell Products.
  • L’attribut Set Product as New From Date affiche désormais la date correcte lorsque l’attribut Set Product as New est défini via une mise à jour groupée de produits. Auparavant, Set Product as New From Date s’affichait comme Jan 1, 1970.
  • Les utilisateurs disposant de rôles restreints ne reçoivent plus automatiquement l’accès aux nouveaux modules.
  • Les conditions des règles de produits associés fonctionnent désormais correctement avec les produits contenant des attributs multiselect.
  • Les marchands peuvent désormais ajouter un attribut de prix dégressif (tier_price) aux comparaisons de produits. Auparavant, la page de comparaison de produits plantait lorsque le paramètre Comparable on storefront de cet attribut était activé. GitHub-35244
  • Magento Open Source affiche désormais un message d’erreur lorsque vous définissez un domaine de cookie invalide (Store > Configurations > Web > Default Cookie Settings Cookie Domain). Auparavant, le site web plantait. GitHub-35048
  • Magento Open Source ne génère plus d’erreur lorsqu’un administrateur dont les rôles sont limités à un seul site web ajoute un produit aux Content Elements via PageBuilder. Auparavant, Magento Open Source générait une erreur SQL.
  • Une validation a été ajoutée à la deuxième ligne de l’adresse postale sur les pages de modification et d’ajout d’adresse. Les longueurs de texte minimale et maximale définies pour cette deuxième ligne sont désormais appliquées.
  • Magento Open Source ne génère plus l’erreur suivante lors de la création d’une règle de catalogue dans l’Admin après une mise à niveau : A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.
  • Magento Open Source ne génère plus d’erreur lorsque vous cochez la case Check here to link an RSS feed to your Wish List avant de cliquer sur Share Wish list. GitHub-34998
  • Le libellé de la case Show Password (formulaires Customer Login, Customer Registration, Customer Edit (section Change Password) et Customer Set New Password) est désormais traduisible. GitHub-34857
  • Mise à jour des libellés et des descriptions de commentaires dans app/code/Magento/NewRelicReporting/etc/adminhtml/system.xml. GitHub-31947
  • Suppression des fichiers csp_whitelist.xml inutiles. GitHub-30607

GraphQL

  • L’attribut manquant price_range a été ajouté au type GraphQL BundleItemOption. GitHub-35010
  • La requête products ne renvoie plus les attributs sous forme d’agrégation lorsque le paramètre de navigation à facettes Use in Search Results est désactivé. GitHub-33318
  • Un champ price_including_tax a été ajouté à CartItemPrices. GitHub-29057
  • Les champs new_from_data et new_to_datefields de ProductInterface ne sont plus dépréciés. GitHub-34783
  • La requête categories ne génère plus d’exception lors de la récupération d’une liste de catégories dont l’une contient une image introuvable sur le système de fichiers. Auparavant, Magento Open Source générait l’exception suivante : Category image not found. GitHub-34266
  • La requête products renvoie désormais category_uid sous forme d’agrégation, comme prévu. GitHub-32557
  • La mutation updateCartItems supprime désormais correctement les produits lorsque leur stock a atteint la quantité maximale. GitHub-30220
  • La requête urlResolver résout désormais correctement le délimiteur de chemin (/) lorsque plusieurs pages d’accueil ont le même identifiant. Auparavant, la requête ne résolvait pas le délimiteur et renvoyait null. GitHub-33615
  • Les requêtes customer récupèrent désormais correctement les options à sélection multiple des produits groupés lors de l’interrogation des commandes. GitHub-34717
  • Les sessions Magento Open Source ne se terminent plus après une requête GraphQL. Auparavant, le plugin ClearCustomerSessionAfterRequest déconnectait l’acheteur. GitHub-34550
  • La fourchette de prix des produits configurables dans les réponses de la requête products est désormais calculée correctement lorsque le paramètre de configuration Display Out of Stock Products est activé. Auparavant, les options désactivées étaient prises en compte dans le calcul des prix minimum et maximum.
  • La requête products renvoie désormais plusieurs catégories correctement filtrées lors d’un tri par position.
  • Les requêtes setShippingAddressesOnCart valident désormais correctement les ID de région. Auparavant, Magento Open Source générait une erreur lorsque vous utilisiez l’ID de région au lieu du code de région.
  • Les requêtes products ne renvoient désormais que les catégories associées à la boutique transmise dans la requête.
  • La requête categoryList renvoie désormais des résultats qui reflètent la catégorie racine de la boutique interrogée lorsque celle-ci est spécifiée dans l’en-tête. Auparavant, les catégories de la catégorie racine par défaut étaient incluses dans les résultats même si une autre boutique était spécifiée dans l’en-tête.
  • La requête products ne renvoie plus les attributs sous forme d’agrégation lorsque le paramètre Use in Search Results Layered Navigation est désactivé. GitHub-33318
  • La requête cart ne renvoie désormais qu’un seul mode de paiement pour les commandes gratuites. Auparavant, tous les modes de paiement actifs étaient renvoyés dans la réponse. GitHub-34036
  • Les requêtes products ne renvoient plus de valeurs price_range influencées par des variantes désactivées pour les produits configurables. GitHub-33629
  • Ajout d’un plugin avant l’appel collectQuoteTotals afin que les avoirs en boutique ne soient pas appliqués plusieurs fois.
  • La mutation generateCustomerTokenAsAdmin récupère désormais correctement les jetons client. Auparavant, aucun jeton n’était renvoyé et l’erreur suivante apparaissait : Customer email provided does not exist.
  • Le schéma GraphQL est désormais valide lorsqu’un attribut produit personnalisé type est défini. Auparavant, le schéma était invalide, car l’attribut type des types de produits était écrasé par l’attribut personnalisé type. GitHub-34929
  • Les clients ajoutés ou mis à jour avec les mutations createCustomer, createCustomerV2, updateCustomer ou updateCustomerV2 sont désormais enregistrés avec un abonnement actif à la newsletter. Auparavant, les clients étaient désabonnés de la newsletter même lorsque la requête contenait les bons paramètres d’entrée. GitHub-33599
  • Dans un déploiement multisite, la requête products pour une vue de boutique donnée ne renvoie désormais que les catégories situées dans la catégorie racine du site web concerné. Auparavant, la requête renvoyait des catégories issues des catégories racines d’autres sites web. GitHub-34570
  • La requête products ne renvoie désormais que la sous-catégorie de l’ID de catégorie fourni. Auparavant, elle renvoyait toutes les catégories. GitHub-35220
  • La requête customerOrders répond désormais correctement lorsque l’objet gift_message est demandé dans la réponse mais qu’aucun message cadeau n’existe. Auparavant, la requête renvoyait ce message : Can't load gift message for order is returned. GitHub-28957
  • Correction d’un bug de l’indexeur catalog_category_product qui amenait la requête products à renvoyer des catégories d’une autre boutique. GitHub-31253
  • La mutation generateCustomerToken crée désormais correctement une entrée dans customer_log après la génération d’un jeton client. GitHub-33378

Google Analytics

  • Le module Google Tag a été ajouté au code source afin d’accompagner la transition vers Google Analytics 4 en juillet 2023. Vous pouvez encore utiliser vos propriétés Google Universal Analytics et y collecter de nouvelles données, mais Google Universal arrivera en fin de vie en juillet 2023. GitHub-35204, GitHub-35376

Images

  • Les images des pages produit ne scintillent plus et restent centrées comme prévu. Auparavant, une fois l’image chargée sur la page produit, celle-ci se décalait visiblement vers le bas.

Import/export

  • La position des produits associés, de vente incitative (upsell) et de vente croisée (cross-sell) dans le CSV d’export est désormais correcte après la suppression d’un produit de vente croisée depuis l’Admin avant la régénération du fichier CSV. Auparavant, les positions des produits de vente croisée n’étaient pas recalculées après la suppression d’un tel produit, et l’ordre des positions était incorrect.
  • Magento Open Source vérifie désormais la présence d’une vue personnalisée avant de filtrer les colonnes lors de l’export de rapports. Auparavant, les rapports exportés ne tenaient pas compte des vues personnalisées et les colonnes exportées étaient incorrectes.
  • Magento Open Source importe désormais correctement les images dont le nom de fichier est long. Auparavant, Magento Open Source n’importait pas l’image et générait l’erreur suivante : Imported resource (image) could not be downloaded from external resource due to timeout or access permissions in row(s):.
  • Les attributs d’ID de catégorie sont désormais disponibles dans les filtres d’export planifié.
  • Les produits groupés (bundle) dont le titre d’option contient un point d’interrogation (?) peuvent désormais être importés correctement grâce aux améliorations apportées au générateur de requêtes de la méthode populateExistingOptions. Le titre de l’option s’affiche également correctement. Auparavant, après l’import initial, les imports suivants entraînaient un comportement corrompu et des options en double. Les acheteurs ne pouvaient pas non plus ajouter le produit au panier.
  • Ajout d’une validation des noms de catégories lors de l’import. Auparavant, Magento Open Source ne validait pas les noms de catégories, ce qui provoquait des erreurs lorsqu’ils dépassaient 255 caractères.
  • Les enregistrements existants de la table catalog_url_rewrite_product_category sont désormais supprimés avant l’insertion des nouveaux. Auparavant, l’erreur suivante survenait lors de l’import de produits multiboutique : SQLSTATE[23000]: Integrity constraint violation. GitHub-34210

Infrastructure

  • Un plugin Context Menu obsolète a été retiré de la liste des plugins.
  • La logique liée à la barre d’outils de l’éditeur TinyMCE dans le module Page Builder a été mise à jour suite à l’introduction de la logique delayedRender pour la barre d’outils de TinyMCE.
  • Les situations de concurrence (race conditions) n’interrompent plus la création de l’écouteur d’événement contentUpdated. GitHub-32068
  • La fonction getTypeID renvoie désormais l’ID du type de produit et non l’ID du produit. GitHub-35458
  • Le mappage du slider jQuery UI et de SelectMenu a été corrigé dans vendor/magento/module-theme/view/base/requirejs-config.js.

  • Les observateurs placés sur sales_order_state_change_before permettent désormais de récupérer les données de l’objet commande. L’argument event de sales_order_state_change_before a été mis à jour. GitHub-26789

  • indexer:reset a été refactorisé pour appeler $indexer->invalidate(). GitHub-34988
  • Vous pouvez désormais utiliser le caractère deux-points dans la valeur d’un attribut htmlClass, ce qui permet d’utiliser des composants supplémentaires comme Tailwind UI. GitHub-34430

Journalisation

  • Les actions sur les clients, les adresses client et les commandes sont désormais correctement journalisées dans le rapport des actions de l’Admin. Auparavant, Magento Open Source ne journalisait pas les actions si le gestionnaire postDispatch n’avait pas été spécifié dans les paramètres de configuration.

MFTF

Groupes d’actions

Les actions répétitives ont été remplacées par des groupes d’actions dans les tests suivants :

AdminConfigurableProductChildrenOutOfStockTest GitHub-32378 AdminCreateStoreViewTest GitHub-34631

Nouveaux tests

AdminUnlockAdminUserEntityTest GitHub-34836

StorefrontNewsletterSubscriptionWithEnabledNeedToConfirmConfigTest GitHub-33344

Tests refactorisés

AdminCancelTheCreatedOrderWithCashOnDeliveryPaymentMethodTest GitHub-33692

Newsletter

  • Les clients connectés ne sont plus signalés comme invités dans Admin > Marketing > Newsletter Subscribers.
  • L’e-mail de confirmation d’abonnement à la newsletter affiche désormais la bonne adresse e-mail, propre à la boutique, dans le champ From lorsque le client est rattaché à une boutique autre que celle par défaut et qu’il est abonné ou désabonné depuis l’Admin. Auparavant, le client recevait un e-mail avec l’adresse par défaut dans l’en-tête From. GitHub-34963
  • L’URL de désabonnement du modèle d’e-mail de newsletter fonctionne désormais correctement. GitHub-33310

Commandes

  • Les informations des clients invités sont désormais correctement enregistrées après la modification d’une commande. Auparavant, certaines informations client étaient perdues, notamment customer_firstname et customer_lastname, x_forwarded_for.
  • Les marchands ne peuvent plus créer d’avoir avec une quantité totale décimale lorsque Decimal qty est désactivé au niveau du produit ou de la configuration globale. Auparavant, les marchands pouvaient créer un avoir avec une quantité totale décimale là où cela n’était pas applicable.
  • Le filtre par date fonctionne désormais correctement pour les grilles des factures, expéditions, avoirs, pages CMS et blocs CMS lorsque le fuseau horaire défini dans les préférences diffère de celui de l’ordinateur local. Auparavant, la date était mal analysée et les résultats filtrés incluaient des données hors de la plage de dates définie.
  • Magento Open Source ne modifie plus les adresses e-mail personnalisées attribuées aux commandes lorsque vous changez l’adresse e-mail principale du client sur la page de modification du compte dans l’Admin. Auparavant, lorsque vous modifiiez l’adresse e-mail principale d’un client, la nouvelle adresse était attribuée à toutes les commandes créées pour ce client.