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.

