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
MaliciousCodea été mis à niveau pour utiliser la bibliothèqueHtmlPurifier.
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
httpsau lieu dehttp. -
La bibliothèque
Froogaloopa été remplacée par la bibliothèque VimeoPlayer.js(2.16.4). -
La bibliothèque
grunt-eslint(NPM) a été mise à niveau vers la dernière version. -
Les bibliothèques
jQuery Storageont été remplacées parjulien-maurel/js-storage. -
Les outils dâanalyse statique du code
php-cs-fixeretphpcssont 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-cookiea été remplacée parjs-cookie/js-cookie. -
Les bibliothèques
jarallax.jsetjaralax-video.jsont é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 1permet 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
httpde 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_listde 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/productspour 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_cacheest 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
addProductsToCartfonctionne 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
cartne renvoie plus de réponses nulles lorsquâun produit est en rupture de stock. Un nouvel élémenterrorscontenant 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 valeurnulldans la sectionitemsde 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 Onlyest 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_priceaprès une réindexation complète. Auparavant, les triggers étaient supprimés de la tablecatalogrule_product_priceaprès une réindexation complète decatalogrule_ruleou decatalogrule_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-pricesrenvoyait 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_variantremplace le champConfigurableWishlistItem.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 storageest activé, Magento Open Source ajoute les données des produits récemment consultés dans la tablecatalog_product_frontend_actionde la base de données, en incluant lâID du client ou du visiteur. La sectionrecently_viewed_productde la réponse est désormais vide si lâID client et lâID visiteur sont nuls. Ainsi, lorsque la requête Ajaxcustomer/section/loadest 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 tablecatalog_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_keydu cookie et leform_keyde 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
intafin 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
productsré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
selectglobaux via un script de patch. Auparavant, les attributs globaux éligibles étaient masqués. -
La mutation
addConfigurableProductsToCartpeut 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
addConfigurableProductsToCartfonctionne 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
- 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 fonctionTO_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:setnâécrase plus les préfixes dâID de cache déjà définis dansapp/etc/env.php. - La commande
bin/magento setup:static-content:deploy -s compactinclut 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.xmlaprès une mise à jour. - La fonction
updateCartCurrencydéfinit désormais une chaîne au lieu dâun objet dans lâobjet panier. Auparavant, Magento Open Source ne chargeait pas un devis viagetQuote, car la fonctionupdateCartCurrencydé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 typearray|stringau lieu debool. - La méthode
isFreeShippingrenvoie 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=errorsur 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 deprecatedlorsque la connexion AMPQ est configurée sans SSL. - Correction de la définition de base de données
longblogenlong blob. GitHub-35108 - Les textes Knockout contenant des apostrophes droites sont désormais traduisibles. GitHub-34319
- Une
TypeErrordansmagento2/app/code/Magento/Security/Model/AdminSessionsManager.phpa été corrigée en passant deintÃstring. GitHub-34415 .htpasswda été ajouté aux emplacements interdits dans le fichier de configurationnginx. 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/appen tant quedepsdansapp/code/Magento/Ui/view/frontend/requirejs-config.js. GitHub-34847 - La méthode
ProductRepository.php:getrenvoie 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-GroupedProductGraphQlont é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
productsrenvoie désormais des informations produit qui reflètent fidèlement la configuration « Show Related Products ». Les champsrelated_products,upsell_productsetcrosssell_productsde 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.xmlinutiles. GitHub-30607
GraphQL
- Lâattribut manquant
price_rangea été ajouté au type GraphQLBundleItemOption. GitHub-35010 - La requête
productsne 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_taxa été ajouté ÃCartItemPrices. GitHub-29057 - Les champs
new_from_dataetnew_to_datefieldsdeProductInterfacene sont plus dépréciés. GitHub-34783 - La requête
categoriesne 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
productsrenvoie désormaiscategory_uidsous forme dâagrégation, comme prévu. GitHub-32557 - La mutation
updateCartItemssupprime désormais correctement les produits lorsque leur stock a atteint la quantité maximale. GitHub-30220 - La requête
urlResolverré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
customerré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
ClearCustomerSessionAfterRequestdéconnectait lâacheteur. GitHub-34550 - La fourchette de prix des produits configurables dans les réponses de la requête
productsest 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
productsrenvoie désormais plusieurs catégories correctement filtrées lors dâun tri par position. - Les requêtes
setShippingAddressesOnCartvalident 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
productsne renvoient désormais que les catégories associées à la boutique transmise dans la requête. - La requête
categoryListrenvoie 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
productsne 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
cartne 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
productsne renvoient plus de valeursprice_rangeinfluencées par des variantes désactivées pour les produits configurables. GitHub-33629 - Ajout dâun plugin avant lâappel
collectQuoteTotalsafin que les avoirs en boutique ne soient pas appliqués plusieurs fois. - La mutation
generateCustomerTokenAsAdminré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é
typeest défini. Auparavant, le schéma était invalide, car lâattributtypedes types de produits était écrasé par lâattribut personnalisétype. GitHub-34929 - Les clients ajoutés ou mis à jour avec les mutations
createCustomer,createCustomerV2,updateCustomerouupdateCustomerV2sont 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
productspour 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
productsne 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
customerOrdersrépond désormais correctement lorsque lâobjetgift_messageest 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_productqui amenait la requêteproductsà renvoyer des catégories dâune autre boutique. GitHub-31253 - La mutation
generateCustomerTokencrée désormais correctement une entrée danscustomer_logaprè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_categorysont 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
delayedRenderpour 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
getTypeIDrenvoie désormais lâID du type de produit et non lâID du produit. GitHub-35458 -
Le mappage du slider jQuery UI et de
SelectMenua été corrigé dansvendor/magento/module-theme/view/base/requirejs-config.js. -
Les observateurs placés sur
sales_order_state_change_beforepermettent désormais de récupérer les données de lâobjet commande. Lâargumenteventdesales_order_state_change_beforea été mis à jour. GitHub-26789 indexer:reseta é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
postDispatchnâ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_firstnameetcustomer_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.

