[PaaS uniquement]{class="badge informative" title="S’applique uniquement aux projets Adobe Commerce on Cloud (infrastructure PaaS gérée par Adobe) et aux projets On-premise."}

Notes de mise à jour de Magento Open Source 2.4.2

Magento Open Source 2.4.2 apporte des améliorations aux performances et à la sécurité, ainsi que des améliorations significatives de la plateforme. Les améliorations de la sécurité incluent une prise en charge accrue de l’attribut SameSite pour tous les cookies. Elasticsearch 7.9.x et Redis 6.x sont désormais pris en charge.

Cette version comprend plus de 280 nouveaux correctifs du code principal et 35 améliorations de la sécurité. Il comprend la résolution de près de 290 problèmes GitHub par les membres de notre communauté. Ces contributions de la communauté vont du nettoyage mineur du code principal à des améliorations significatives dans GraphQL.

Tous les problèmes connus identifiés dans la version 2.4.1 ont été résolus dans cette version.

NOTE
Les versions d’Adobe Commerce peuvent contenir des modifications non rétrocompatibles (BIC). Pour vérifier les modifications non rétrocompatibles, voir Référence BIC. Les principaux problèmes de rétrocompatibilité sont décrits dans points forts du BIC. Toutes les versions n’introduisent pas de BIC majeurs.

Appliquez AC-3022.patch pour continuer à proposer DHL comme transporteur

DHL a introduit la version 6.2 du schéma et abandonnera la version 6.0 dans un avenir proche. Adobe Commerce 2.4.4 et les versions antérieures qui prennent en charge l’intégration DHL ne prennent en charge que la version 6.0. Les commerçants qui déploient ces mainlevées devraient appliquer AC-3022.patch dès que possible pour continuer à offrir DHL en tant que transporteur. Pour plus d’informations sur le téléchargement et l’installation du correctif, consultez l’article de la base de connaissances Appliquer un correctif pour continuer à proposer DHL en tant que transporteur.

Correctif de sécurité disponible

Les commerçants peuvent désormais installer des correctifs de sécurité sensibles au temps sans appliquer les centaines de correctifs et améliorations fonctionnels fournis par une version trimestrielle complète (par exemple, 2.4.1-p1). Le correctif 2.4.0.12 (package Compositeur 2.4.1-p1) est un correctif de sécurité qui fournit des correctifs pour les vulnérabilités qui ont été identifiées dans notre version trimestrielle précédente, la version 2.4.1. Tous les correctifs appliqués à la version 2.4.1 de sont inclus dans ce correctif de sécurité. (Un correctif fournit un correctif à une version publiée qui résout un problème ou un bug spécifique.)

Pour obtenir des informations générales sur les correctifs de sécurité, voir Présentation de la nouvelle version des correctifs de sécurité. Pour obtenir des instructions sur le téléchargement et l’application de correctifs de sécurité (y compris le correctif 2.4.1-p1), consultez Démarrage rapide de l’installation sur site. Les correctifs de sécurité incluent uniquement des correctifs de sécurité, et non les améliorations de sécurité supplémentaires incluses dans le correctif complet.

Autres informations de mise à jour

Bien que le code de ces fonctionnalités soit fourni avec des versions trimestrielles , plusieurs de ces projets (par exemple, Progressive Web Applications (PWA) Studio) sont également publiés indépendamment. Les correctifs de bugs pour ces projets sont documentés dans les informations de mise à jour distinctes spécifiques au projet disponibles dans la documentation de chaque projet.

Faits saillants

Recherchez les points forts suivants dans cette version.

Améliorations substantielles de la sécurité

Cette version comprend plus de 35 correctifs de sécurité et améliorations de la sécurité de la plateforme. Tous les correctifs de sécurité ont été rétroportés dans 2.4.1-p1 et 2.3.6-p1.

Plus de 35 améliorations de la sécurité qui permettent de corriger les vulnérabilités RCE (Remote Code Execution) et XSS (Cross-site scripting)

Aucune attaque confirmée liée à ces problèmes ne s’est produite à ce jour. Cependant, certaines vulnérabilités peuvent potentiellement être exploitées pour accéder aux informations sur les clients ou prendre le contrôle de sessions d’administration. La plupart de ces problèmes nécessitent qu’un attaquant obtienne d’abord l’accès à l’administrateur. Placer sur la liste autorisée Par conséquent, nous vous rappelons de prendre toutes les mesures nécessaires pour protéger votre administrateur, y compris, mais sans s'y limiter, ces efforts : la limitation des adresses IP, l'authentification à deux facteurs, l'utilisation d'un VPN, l'utilisation d'un emplacement unique plutôt que d'un /admin, et une bonne hygiène des mots de passe. Consultez le Bulletin de sécurité Adobe pour une discussion sur ces problèmes résolus.

Améliorations de la sécurité supplémentaires

Les améliorations apportées à la sécurité dans cette version sont les suivantes :

  • Tous les cookies principaux prennent désormais en charge l’attribut SameSite.

  • L’application affiche désormais des messages qui identifient le contenu potentiellement malveillant dans les champs de description de produit et de catégorie lorsque l’utilisateur ou l’utilisatrice tente d’enregistrer des valeurs dans ces champs.

  • Les opérations du système de fichiers sur les composants ont été normalisées et renforcées pour empêcher les chargements malveillants.

  • Les violations de la politique de sécurité du contenu principal (CSP) ont été corrigées.

NOTE
À compter de la version 2.3.2, nous attribuerons et publierons des numéros CVE (Common Vulnerabilities and Expositions) indexés avec chaque bogue de sécurité qui nous est signalé par des tiers externes. Cela permet aux utilisateurs et utilisatrices d’identifier plus facilement les vulnérabilités non corrigées dans leur déploiement. Pour en savoir plus sur les identifiants CVE, voir CVE.

Améliorations de l’infrastructure

Cette version comprend des améliorations de la qualité principale, qui améliorent la qualité du framework et ces domaines fonctionnels : compte client, catalogue, CMS, OMS, import/export, promotions et ciblage, et panier et passage en caisse.

Améliorations de Platform

  • Elasticsearch 7.9.x est désormais pris en charge. Bien que nous vous recommandions d’exécuter Elasticsearch 7.9.x, la version 2.4.x reste compatible avec Elasticsearch 7.4.x.

  • 2.4.2 a été testé avec Varnish 6.4. La version 2.4.x reste compatible avec Varnish 6.x.

  • Redis 6.x est désormais pris en charge. La version 2.4.x reste compatible avec Redis 5.x.

  • 2.4.2 est désormais compatible avec Composer 2.x. Nous recommandons aux commerçants de migrer vers Composer 2.x. Bien que vous puissiez installer cette version à l’aide du compositeur 1.x, le compositeur 1.x atteindra bientôt sa fin de vie. Pour une présentation des fonctionnalités du compositeur 2.x, voir Le compositeur 2.0 est désormais disponible !

Cette version ne permet plus de configurer une installation pour utiliser une base de données fractionnée. Les commerçants qui utilisent actuellement une base de données fractionnée doivent commencer à planifier le retour ou la migration vers une seule base de données ou utiliser une autre approche. Consultez l’article Obsolescence de la fonctionnalité de base de données partagée dans Magento Open Source DevBlog pour obtenir un aperçu de ce problème. Pour obtenir des instructions sur la migration voirRétablir une base de données fractionnée en une seule base de données.

Améliorations des performances

Cette version comprend des améliorations du code qui améliorent les performances des API et le temps de réponse de l’administrateur pour les déploiements avec des catalogues volumineux. Plusieurs améliorations d’évolutivité permettent à la version 2.4.2 de prendre en charge en mode natif des catalogues complexes jusqu’à 20 fois plus volumineux que dans les versions précédentes.

Intégration d’Adobe Stock

Cette version comprend l’intégration d’Adobe Stock v2.1.1.

GraphQL

Cette version ajoute une couverture GraphQL pour les fonctionnalités suivantes :

  • Ajout de la prise en charge de listes de comparaison. Les acheteurs peuvent créer et supprimer des listes de comparaison et ajouter et supprimer des éléments aux listes de comparaison. En outre, les acheteurs qui créent une liste de comparaison en tant qu’invité peuvent se connecter en tant que client et conserver leurs listes de comparaison.

  • Ajout de la mutation generateCustomerTokenAsAdmin et mise à jour de l’objet Customer pour prendre en charge l’assistance aux achats à distance.

  • Ajout de la localisation dans les magasins pour prendre en charge des tâches telles que le changement de langue, de panier et de devise.

  • Ajout de la prise en charge des unions dans GraphQL. GitHub-29425

  • Le schéma GraphQL a été amélioré afin d’optimiser la récupération des données de produit pour les produits configurables avec de nombreuses variantes.

  • Les ID d’objet de type entier ont été abandonnés au profit d’attributs uid de type ID.

  • Ajout de l’attribut staging aux ProductInterface et CategoryInterface pour déterminer si un produit est en cours d’évaluation et pour afficher les informations de campagne associées.

Consultez le Guide du développeur de GraphQL pour plus d’informations sur ces améliorations.

PWA Studio

Cette version de PWA Studio comprend les éléments suivants :

  • Internationalisation et localisation. Venia prend désormais en charge plusieurs langues et devises.

  • Amélioration du framework d’extensibilité pour prendre en charge les modifications de code par le biais d’extensions.

  • Composants initiaux des fonctionnalités liées à Mon compte, telles que la liste de souhaits, les paiements enregistrés, le carnet d’adresses et l’historique des commandes.

  • Diverses optimisations des performances et correctifs de bugs.

Pour plus d’informations sur les améliorations et les correctifs, voir Versions de PWA Studio. Consultez compatibilité pour obtenir la liste des versions de PWA Studio et de leurs versions compatibles.

Galerie de médias

Nouvelles ressources de rôle pour Media Gallery. Cette version offre aux commerçants la possibilité de limiter l’accès administrateur à la galerie de médias uniquement et de contrôler qui peut effectuer ces actions :

  • Insertion de ressources multimédias dans le contenu

  • Chargement de ressources

  • Modifier les détails des ressources

  • Suppression de ressources de la Galerie de médias

  • Gérer la structure des dossiers.

Images optimisées pour le web dans le contenu. Les commerçants peuvent désormais utiliser le rendu d’image optimisé pour le web dans le contenu au lieu des images haute résolution. L’image d’origine n’est pas modifiée dans la Galerie de médias et le rendu de l’image est généré dynamiquement lorsque l’image est insérée dans le contenu.

Functional Testing Framework (MFTF)

MFTF 3.2.1 est désormais disponible. Cette version introduit une tolérance d’erreur dans les tests et la génération de suites de tests. D’autres améliorations et correctifs sont décrits dans le Journal des modifications de la structure de tests fonctionnels.

Extensions développées par le fournisseur

Consultez les articles suivants pour obtenir des mises à jour sur les fonctionnalités et les modifications de cette version :

Améliorations de la prise en charge d’AWS S3

La prise en charge d’Amazon Simple Storage Service (AWS S3) a été améliorée afin d’inclure les éléments suivants :

Problèmes résolus

Nous avons corrigé des centaines de problèmes dans le code principal 2.4.2.

Installation, mise à niveau, déploiement

  • Les commerçants peuvent désormais mettre à niveau un déploiement Open Source qui exécute MySQL 8.x vers un déploiement Commerce. Auparavant, l’application générait une exception lorsque les valeurs AUTO_INCREMENT revenaient aux valeurs initiales pour toutes les tables où row_id avait été ajouté lors de la mise à niveau.
  • L’application affiche désormais un message d’erreur qui identifie le chemin d’accès utilisé pour créer le correctif si une erreur se produit lors de l’exécution de bin/magento/setup:db:generate-patch. GitHub-27523
  • Les caches block_html, full_page et layout sont désormais désactivés comme prévu après l’exécution du bin/magento/setup:upgrade. GitHub-28186
  • La version PHP minimale requise dans bootstrap.php a été mise à jour. GitHub-30004
  • Vous pouvez désormais exécuter bin/magento/setup:upgrade après l’installation des données d’exemple. Auparavant, lorsque vous tentiez d’exécuter bin/magento/setup:upgrade, l’application affichait cette erreur : unable to apply data patch magento\catalogrulesampledata\setup\patch\data\installcatalogrulesampledata for module magento_catalogrulesampledata. L’application a également affiché cette erreur dans le journal système : main.ERROR: Sample Data error: Unable to unserialize value. Error: Syntax error. GitHub-30685
  • Vous pouvez désormais définir une clé API YouTube à partir de la ligne de commande comme prévu. Auparavant, l’application renvoyait cette erreur lorsque vous tentiez d’exécuter bin/magento config:sensitive:set catalog/product_video/youtube_api_key : There are no sensitive configurations to fill.
  • L’application respecte désormais les valeurs maxMessages définies dans queue_consumer.xml. Auparavant, l’application utilisait uniquement les valeurs de configuration de déploiement. GitHub-29522
  • La génération d’URL pour un nouveau magasin fonctionne désormais comme prévu lorsque le magasin est créé à l’aide de bin/magento setup:config:import. Auparavant, les réécritures d’URL n’étaient pas générées dans les environnements de production. GitHub-30025
  • L’application ne renvoie plus d’erreur lorsque vous tentez de modifier des backend-frontname à l’aide du conteneur ssh après l’installation de Magento Open Source. GitHub-26762
  • L'application n'affiche plus cette question lorsque vous exécutez bin/magento setup:install pour vous connecter à la base de données existante : Overwrite the existing configuration for db-ssl-verify?[Y/n]. GitHub-29612

Intégration d’Adobe Stock

  • Ajout de la prise en charge de la lecture de métadonnées exif_image.png ou exif-image.jpeg. GitHub-1449
  • Le contenu affiché lorsque vous cliquez sur le signet Affichage par défaut pour la Galerie de médias n’est plus filtré. Auparavant, la vue par défaut contenait un filtre appliqué à partir de url-filter’applicateur. GitHub-1813, GitHub-1789, GitHub-1780
  • La logique a été supprimée du contrôleur OnInsert de WYSIWYG (Magento\Cms\Controller\Adminhtml\Wysiwyg\Images\OnInsert::execute()) et ajoutée au modèle Model\Wysiwyg\Images\PrepareImage::execute(). GitHub-1504
  • L’émulation de zone a été supprimée de la commande media-content:sync (\Magento\MediaContentSynchronization\Console\Command\Synchronize::execute). GitHub-1784

Analytics

  • Les rapports avancés fonctionnent désormais comme prévu pour plusieurs environnements dans le même domaine. Auparavant, les fichiers CSV générés par les rapports avancés échouaient, car les guillemets doubles étaient précédés de barres obliques inverses plutôt qu’avec un autre guillemet double, comme l’exigeait la norme CSV RFC4180.
  • La tâche analytics_collect_data s’exécute désormais correctement lors de l’utilisation du port par défaut ou d’un port autre que le port par défaut pour se connecter à MySQL dans env.php. Auparavant, analytics_collect_data générait une erreur lorsque vous utilisiez le port autre que le port par défaut.
  • Les fichiers CSV générés par analytics_collect_data sont désormais correctement protégés. Auparavant, ces fichiers n’étaient pas générés avec l’échappement correct, ce qui empêchait la génération de rapports d’inventaire.

Braintree

  • Les acheteurs peuvent désormais utiliser Apple Pay pour passer une commande de produits virtuels. Auparavant, l’application générait cette erreur : There are no shipping methods available for you right now. Please try again or use an alternative payment method.

  • Le mode de paiement par défaut de PayPal Express Checkout fonctionne désormais comme prévu avec le mode de paiement par carte de crédit Braintree. Auparavant, l’application n’affichait pas le bouton PayPal lorsque le mode de paiement par carte de crédit Braintree était activé.

Lots de produits

  • L'application ne définit plus de prix pour les articles enfants de produits groupés à prix fixe dans les devis.
  • Le tri par prix fonctionne désormais comme prévu lorsque les produits groupés incluent des produits en rupture de stock. Auparavant, le prix de tri par ordre décroissant n’affichait pas les produits par ordre décroissant de prix.
  • L’application applique désormais automatiquement une quantité par défaut de 1 pour les options de produit groupé lorsque de nombreuses options existent. Auparavant, les commerçants devaient attribuer manuellement une quantité par défaut à chaque option.
  • La page de création des factures de commande affiche désormais les produits enfants pour les produits groupés comme prévu. GitHub-27350
  • L’application attribue désormais des prix de produit corrects lorsque vous commandez à nouveau des produits simples qui font partie d’un lot de produits avec un prix personnalisé. Auparavant, la définition d’un prix personnalisé sur un produit groupé entraînait des prix incorrects sur les produits simples joints lors de la réorganisation. GitHub-30343
  • L’appel de POST /V1/order/{orderId}/ship pour envoyer une commande contenant un produit groupé marque désormais la commande comme terminée. Auparavant, l’application affichait le message d’erreur suivant : You can't create a shipment without products. GitHub-9762

Panier et passer en caisse

  • L’estimateur de méthode d’expédition fonctionne désormais comme prévu lorsque des attributs d’adresse personnalisés sont présents à l’étape d’expédition du workflow de passage en caisse. Auparavant, l’application affichait le message d’erreur suivant : {"message":"Error occurred during \"custom_attributes\" processing. A custom attribute is specified with a missing attribute code. Verify the code and try again."} GitHub-27505
  • L’application affiche désormais le message You have no items in your shopping cart dans le mini panier comme prévu lorsqu’un acheteur supprime le seul article de son panier. Auparavant, les données du panier n’étaient pas mises à jour pour les checkout/cart/removeFailed lorsqu’un acheteur supprimait l’article unique et l’application affichait le message suivant : 1 product requires your attention.
  • L’application n’affiche plus les coûts d’expédition d’une commande pour un mode d’expédition non applicable. Auparavant, l’application affichait un prix de 0 pour une méthode d’expédition non applicable dans le workflow de passage en caisse.
  • L’adresse de facturation par défaut d’un client est désormais sélectionnée lorsque la case Mes adresses de facturation et d’expédition sont les mêmes du workflow de passage en caisse est décochée.
  • Le contenu du panier n’est plus perdu lorsqu’un acheteur passe d’un magasin à un autre dans un autre domaine.
  • Les acheteurs peuvent désormais terminer une commande à l’aide de l’option Extraire avec plusieurs adresses lors de l’utilisation de plusieurs méthodes d’expédition. Auparavant, l’application affichait cette erreur : There has been an error processing your request. GitHub-30197
  • L’application affiche désormais le pays par défaut correct sur la page d’expédition du workflow de passage en caisse lorsque l’acheteur modifie la vue du magasin à partir du panier.
  • L’application exclut désormais la session en cours lors du nettoyage des sessions client après la réinitialisation d’un mot de passe après la déconnexion lorsqu’un client invité est connecté. Auparavant, l’application vidait le panier lorsque l’acheteur réinitialisait son mot de passe.
  • L’application affiche désormais le pays par défaut correct pour une vue de magasin lorsqu’un acheteur modifie la vue du magasin dans le panier. Auparavant, lorsque l’affichage du magasin était modifié dans le panier, le pays par défaut était incorrect.
  • Les appels redondants vers le point d’entrée /rest/V1/guest-carts/cart_id/totals-information sur le panier ont été supprimés, ce qui a amélioré les performances du panier. Auparavant, lorsqu’un acheteur ajoutait un produit au panier, puis affichait le panier, l’application appelait la méthode collectAddressTotals plusieurs fois.
  • L’application n’affiche plus le champ Région pour un pays dans le workflow de passage en caisse lorsque le paramètre Autoriser à choisir l’état s’il est facultatif pour le pays est désactivé. GitHub-30747
  • L’application ne répète plus une adresse d’expédition dans le workflow de passage en caisse de storefront lorsqu’une commande est commandée à nouveau auprès de l’administrateur.
  • Correction de problèmes de conception de AdminMediaGalleryInsertLargeImageFileSizeTest.
  • Tous les nouveaux enregistrements de la table quote pour les invités se voient maintenant attribuer une valeur de 1 dans la customer_is_guest field. Auparavant, pour chaque nouvel invité qui ajoutait un produit au panier, l’enregistrement se voyait attribuer un 0 dans le champ quote.customer_is_guest.
  • Le bouton Envoyer de la section Révision et paiements du workflow de passage en caisse a été déplacé vers le <form id="purchaseorder-form"...></form> interne, ce qui rend possible l’envoi de formulaire implicite sans modifier les JavaScript. GitHub-27925
  • L’application n’affiche plus le champ Région dans le workflow de passage en caisse lorsque le paramètre Autoriser à choisir l’état s’il est facultatif pour le pays est désactivé. GitHub-30747
  • L’application met désormais correctement à jour le sous-total d’articles d’un panier lorsqu’un acheteur clique sur Mettre à jour le panier lors de la commande avec plusieurs adresses. GitHub-30408
  • L’application ne renvoie plus d’exception lorsque des nœuds config.xml existent pour des modes de paiement qui ne sont pas actuellement installés. Auparavant, l’application générait une exception lors de l’extraction. GitHub-29555
  • L’application effectue désormais le rendu des noms de produits qui contiennent correctement des caractères spéciaux dans le mini panier. GitHub-29075
  • L'application définit désormais le bon package de remise pour le taux de table. Auparavant, l’application n’appliquait pas de règle de panier définissant une remise sur le panier lors du calcul du taux de la table. GitHub-30169

Règle de prix du panier

  • Les règles de prix du panier sont désormais appliquées comme prévu lorsque les sous-totaux de commande sont calculés sans inclure la taxe. La nouvelle option Subtotal (Incl. Tax) a été ajoutée en tant que condition de règle de prix de panier.
  • L’application d’une règle de prix avec un coupon à l’aide de GraphQL fonctionne désormais comme prévu lorsque l’action Remise de montant fixe pour l’ensemble du panier est utilisée.

Catalogue

  • L’application affiche désormais tous les produits réactivés dans le storefront comme prévu. Auparavant, lorsqu’un produit était désactivé puis réactivé, l’application n’affichait pas le produit tant que le cache de page du vernis n’était pas effacé ou que le magasin n’était pas réindexé, car le cache de page n’était pas invalidé après la réactivation d’un produit.
  • La réindexation partielle des catalogues volumineux fonctionne désormais comme prévu. Auparavant, les produits disparaissaient de manière aléatoire de la page de catégorie du storefront lors de la réindexation avec l’indexeur partiel catalogsearch_fulltext.
  • Les acheteurs peuvent désormais commander à nouveau une commande facturée d’un produit avec des options personnalisables comme prévu. Auparavant, l’application générait cette erreur lorsqu’un acheteur tentait de commander à nouveau : {"0":"The product's required option(s) weren't entered. Make sure the options are entered and try again.
  • Vous pouvez maintenant définir le paramètre Disposition sur la page de conception de catégorie sur Aucune mise à jour de la disposition. Auparavant, l’application revenait à Catégorie - Pleine largeur lorsque vous affectiez la valeur Aucune mise à jour de disposition.
  • Les problèmes liés à l’ordre de tri des produits sur le storefront ont été résolus. Auparavant, lorsque l’application indexait les prix des produits, elle définissait parfois la min_price et la max_price d’un produit configurable sur 0 dans le tableau catalog_product_index_price, ce qui affectait l’ordre de tri des prix sur le storefront.
  • L’application met désormais à jour les attributs libellés Product Type. Auparavant, comme l’attribut product_type était réservé dans le code, l’application affichait ce message lorsque vous tentiez de mettre à jour un attribut Product Type : An attribute with the same code (product_type) already exists.
  • L’application ne modifie plus la position d’une vidéo chargée dans la section Images et vidéos de la page des détails du produit lorsque vous enregistrez le produit. Auparavant, la nouvelle position de l’image se voyait attribuer une valeur d’index (position dans la liste) et, si les positions des images existantes n’étaient pas alignées avec leurs valeurs d’index, la nouvelle image était placée à tort dans la liste.
  • La fonctionnalité Ajouter au panier fonctionne désormais comme prévu chaque fois que vous pouvez cliquer sur le bouton Ajouter au panier. Auparavant, si vous cliquiez plusieurs fois sur ce bouton en attendant le chargement d’une page produit, l’application générait l’erreur suivante : Invalid Form Key. Please refresh the page.
  • L’application ne vide plus le cache de catégorie lorsqu’un commerçant ajoute ou supprime des produits désactivés d’une catégorie ou en ajoute. Auparavant, l’application vidait le cache pour les catégories associées malgré le statut du produit. L’affectation de catégories était également annulée lors de l’enregistrement d’une catégorie, ce qui entraînait le vidage du cache de catégorie.
  • Le filtrage des produits du catalogue dans la portée Toutes les vues de la boutique fonctionne désormais correctement. Auparavant, les produits dont l’état était soit Enabled soit Disabled s’affichaient dans la grille lors du filtrage des produits activés ou désactivés uniquement.
  • La réindexation partielle n’entraîne plus la perte de produits et de catégories vides.
  • La réorganisation fonctionne désormais comme prévu lorsque l’option Utiliser le calendrier JavaScript est activée (Magasins > Configuration > Catalogue > Options personnalisées de date et d’heure). Auparavant, lorsque ce paramètre était activé, l’application affichait cette erreur lorsque vous tentiez de réorganiser la commande précédemment passée auprès de l’administrateur : Please specify date required option(s).
  • L’application affiche désormais la devise correcte dans les déploiements multisites lors de la création du prix de niveau.
  • Les attributs personnalisés de l’image du produit sont désormais correctement placés dans une séquence d’échappement. L’attribut data-src a la même valeur que src attribut, comme prévu. Auparavant, les symboles spéciaux des URL étaient placés dans une séquence d’échappement.
  • La mise à jour d’une catégorie par le biais de l’API REST ne désactive plus le paramètre Utiliser la valeur par défaut dans les attributs Activer la catégorie, Inclure dans le menu et Clé d’URL.
  • L’enregistrement d’une catégorie vide uniquement le cache de bloc associé à cette catégorie. Auparavant, l’application vidait le cache de tous les blocs de catégorie.
  • Le prix d’une option personnalisée avec un prix en pourcentage est désormais converti comme prévu dans la devise de base du magasin actif dans les déploiements multi-magasins. Auparavant, le prix d’une option personnalisée avec un pourcentage de prix était converti de manière incorrecte. GitHub-26432
  • L’application recrée désormais les images avec succès, et ces images sont visibles dans l’administration comme prévu chaque fois qu’un commerçant envoie des données de galerie multimédia à l’aide de rest/all/V1/products POST. Auparavant, l’application recréait les images, mais les supprimait lorsqu’un commerçant envoyait des données de galerie de médias via POST rest/all/V1/products si les images étaient supprimées dans pub/media, mais qu’il y avait encore des enregistrements dans les médias qui contenaient toujours des enregistrements pour ces images. Par conséquent, le commerçant n’a vu que les espaces réservés dans l’administrateur, car les images ont été créées et supprimées pendant le processus de mise à jour.
  • Les enregistrements sont désormais supprimés comme prévu lorsque vous avez annulé l’affectation d’un élément d’un site web. Auparavant, les images étaient dupliquées lors de l’exécution de POST rest/all/V1/products.
  • L’appel /V1/categories/{categoryId}/products renvoie désormais une liste de tous les produits appartenant à la catégorie parente comme prévu. Auparavant, si un produit appartenait à plusieurs sous-catégories de la catégorie parent, l’application générait ce type d’erreur : Internal Error. Details are available in the application log file. Report ID: webapi-5f8579e37db54. GitHub-30461
  • Le point d’entrée REST /V1/products/attributes/:attributeCode/options prend désormais en charge la mise à jour d’une option d’attribut existante.
  • Le prix d’une option personnalisée avec un prix en pourcentage est désormais converti comme prévu dans la devise de base du magasin actif dans les déploiements multi-magasins. Auparavant, le prix d’une option personnalisée avec un pourcentage de prix était converti de manière incorrecte. GitHub-26432
  • Les commerçants peuvent désormais enregistrer un nouvel attribut lors de la création du produit. Auparavant, l’application n’enregistrait pas l’attribut et redirigeait le commerçant vers la page d’accueil des vues du magasin lorsqu’il tentait d’enregistrer l’attribut. GitHub-30362
  • Les grilles de produits des pages Ventes > Commandes et Catalogue > Produits répertorient désormais tous les magasins pertinents, et pas seulement le magasin le plus récemment créé. GitHub-29267
  • Le référentiel de produit utilise désormais store_id lorsqu’il est disponible pour enregistrer les valeurs d’attribut d’un produit existant. Auparavant, la classe de référentiel de produit remplaçait l’ID de magasin de produits et lui affectait toujours l’ID de magasin par défaut. GitHub-29933

Règle de catalogue

  • Les règles de prix de catalogue fonctionnent désormais comme prévu avec les options personnalisées sur les pages de détails du produit. Auparavant, les prix des produits sur cette page ne reflétaient pas les règles de prix de catalogue applicables. GitHub-22856
  • Les caches de produits et de catalogues expirent désormais comme prévu. Auparavant, les caches expiraient tous les jours, car сron exécutions la tâche catalogrule_apply_all une fois par jour, ce qui réindexait toutes les règles de catalogue et tous les indexeurs dépendants, et effaçait le cache pour tous les produits et catégories.

Nettoyage

Nettoyage des fautes de frappe et de la grammaire

  • Le titre de la page Echec de la commande a été révisé pour en garantir l’exactitude. Auparavant, cette page s’intitulait : Nous avons reçu votre commande !. GitHub-29416
  • Suppression des espaces inutiles dans app/code/Magento/Contact/view/frontend/templates/form.phtml. GitHub-29779
  • Correction d'une faute de frappe dans le message d'aide de la sous-commande bin/magento/setup:config:set. GitHub-28802
  • Correction de la grammaire dans le fichier PHPDoc pour le fichier framework/Registry.php. GitHub-29661
  • Suppression des espaces superflus dans app/code/Magento/Catalog/Helper/Product/View.php. GitHub-30601
  • Correction d’une faute de frappe dans le nom d’une fonction dans app/code/Magento/Ui/view/base/web/js/form/element/ui-select.js. GitHub-29987
  • Correction de la pluralisation de « article » dans le mini panier et le résumé de l’ordre de passage en caisse. GitHub-29920
  • Suppression des espaces blancs dans les éléments intégrés dans les filtres de navigation superposés aux balises. GitHub-30448
  • rl a été corrigé en url dans \Magento\Framework\Filter\Template\Tokenizer\Parameter. GitHub-29185

Nettoyage du code

  • Une balise <br> HTML superflue a été supprimée de la zone Message de vérification des données de la page Système > Importer.
  • AccessChangeQuoteControl et ses tests unitaires ont été restructurés. GitHub-29672
  • Correction du style de code de la déclaration de type de retour dans app/code/Magento/Captcha/CustomerData/Captcha.php. GitHub-29712
  • Correction de la position de la liste de boutons sur la page Nouvel attribut .
  • Ajout de la classe de bloc appropriée pour l’exemple de référence de viewModel front-end pour la classe \Magento\Framework\View\Element\Template. GitHub-30450
  • Un jeu de champs redondant dans le formulaire de règle de vente a été supprimé. GitHub-29599
  • Le code inutile a été supprimé du modèle de hierarchy/edit.phtml.
  • Commentaire PHPdoc corrigé dans app/code/Magento/CatalogImportExport/Model/Export/Product.php. GitHub-30833
  • L'annotation docblock pour le message PublisherInterface a été corrigée. GitHub-30190
  • Arguments corrigés dans la méthode getStatusByState. GitHub-30173
  • Description de la méthode corrigée dans app/code/Magento/Quote/Model/Cart/Totals/ItemConverter.php. GitHub-30125
  • Suppression des affectations de variables redondantes sur la même ligne dans plusieurs fichiers. GitHub-30133
  • Modification de la @param string $attribute en @param AbstractAttribute|string[]|string $attribute dans EntityAbstract.php. GitHub-30191
  • Les balises non valides (par exemple, @package et @subpackage) ont été supprimées des docblocs dans toute la base de code. GitHub-30061
  • Les paramètres inutilisés dans le concept de la classe AdvancedPricing ont été supprimés. GitHub-29531

Produits configurables

  • Le filtrage par prix des produits configurables en rupture de stock affiche désormais les résultats dans la plage de prix appropriée.
  • Un produit virtuel ne change plus de type lorsque son statut passe de activé à désactivé (ou inversement). Auparavant, l’application modifiait le type d’un produit de virtuel à simple lorsque son état changeait.
  • La méthode getValue() ne déclenche plus d’erreur fatale lors de la mise à jour des paniers.
  • Les produits configurables disponibles sur plusieurs sites web n’affichent plus de produits enfants simples qui ne sont pas affectés au site web spécifique. GitHub-28291
  • Les pages de produits Storefront affichent désormais les prix de niveau sans taxe comme prévu. GitHub-12225
  • Les prix PDSF des produits configurables sont maintenant correctement convertis dans la devise choisie. Auparavant, l’application affichait les prix dans la mauvaise devise et générait cette erreur : Call to a member function setAppliedTaxes() on null. GitHub-26526, GitHub-29603
  • Les commerçants peuvent désormais enregistrer un libellé d’option d’attribut d’échantillon de texte spécifique au magasin avec une valeur de 0 (zéro). Auparavant, une valeur de 0 était remplacée par la valeur de l’option Libellé d’administration . GitHub-30073

cron

  • La liste des messages système reflète désormais précisément les mises à jour des produits après l’exécution d’cron et après que l’application a mis à jour les produits comme prévu.
  • Un index basé sur schedule_id et status a été ajouté à la table cron_schedule. GitHub-29601

Attributs de client personnalisés

  • L’application affiche désormais les attributs du client de type file sur la page Informations du compte après la création. Auparavant, lorsque vous tentiez d’enregistrer un nouvel attribut de ce type, l’application affichait les erreurs suivantes : The "newAttribute" attribute value is empty. Set the attribute and try again et Validation is failed.
  • L’application affiche désormais correctement les valeurs d’attribut du client personnalisé multiligne. Auparavant, toutes les données n’étaient pas affichées.
  • L’application avertit désormais les acheteurs lorsqu’ils saisissent une date de naissance non valide lors de la création d’un compte. Auparavant, le programme de validation ignorait les paramètres régionaux et les acheteurs étaient redirigés vers la page Créer un compte client avec une erreur de date non valide.
  • Les attributs d’adresse personnalisés sont désormais inclus comme prévu dans l’étape Paiement du workflow de passage en caisse.
  • Les attributs multi-sélection d’adresse personnalisée s’affichent désormais correctement lors du passage en caisse des invités et sur la page Admin et Mes détails de commande de compte .
  • Vous pouvez désormais supprimer un zéro au début dans un attribut client personnalisé lorsque Input Type est défini sur Text et Input Validation sur Numeric Only.
  • L’application exporte désormais correctement les données client qui incluent une valeur d’attribut de genre personnalisée.

Client

  • Le widget Calendrier du champ de date de naissance de la page du compte client de storefront utilise désormais les paramètres régionaux du magasin désigné.
  • L’application n’enregistre plus les entrées en double d’une adresse de client lors du passage en caisse d’une nouvelle commande d’un client existant auprès de l’administrateur.
  • La suppression de toutes les adresses de plusieurs clients de l’administration supprime désormais toutes les adresses de la liste des adresses des clients et supprime les adresses de facturation et d’expédition par défaut. Auparavant, l’application supprimait l’adresse de la liste des adresses du client, mais ne supprimait pas les adresses de facturation et d’expédition par défaut.
  • L’onglet Admin des adresses client affiche désormais correctement le nombre d’adresses une fois qu’un administrateur a effectué une suppression en masse d’adresses. Auparavant, l’application incluait les adresses supprimées dans son nombre.
  • Le format DateTime du champ Date de naissance de la page d’enregistrement des clients a été corrigé. Auparavant, le zéro initial qui précédait un jour à un seul chiffre était manquant.
  • La validation du format de date pour le champ Date de naissance fonctionne désormais avant que l’acheteur ne clique sur le bouton Créer un compte. Auparavant, un acheteur pouvait saisir une valeur dans un format non valide et, lorsqu’il cliquait sur le bouton Créer un compte, il était redirigé vers la page Créer un compte client avec une erreur de date non valide.
  • L’application ne renvoie plus d’erreur fatale lorsqu’un administrateur tente d’enregistrer un nouveau compte client contenant des données non valides pour un attribut.
  • L’application ne renvoie plus d’erreur 400 lorsqu’un client ou une cliente tente d’accéder à son panier dans un déploiement où Magento Shipping était précédemment installé et où le thème Luma par défaut est actuellement déployé. Auparavant, l’application ne filtrait pas les noms de section créés par des modules installés/activés précédemment qui n’étaient pas pris en charge dans l’administration avant d’envoyer les requêtes au serveur, ce qui générait des erreurs.
  • L’application affiche désormais un message comme prévu lorsqu’un acheteur crée un compte invité lorsque le paramètre Exiger une confirmation par e-mail est activé et Magento\Customer\Controller\Account\CreatePost a été remplacé. Auparavant, l’application ne permettait pas ce type de personnalisation du processus d’enregistrement des utilisateurs. Dans ces conditions, le statut de confirmation par e-mail d’un utilisateur était considéré comme terminé, le nouvel utilisateur était automatiquement connecté et aucun message d’erreur ne s’affichait.
  • L'application affecte désormais un acheteur au groupe de clients approprié lorsque l'acheteur passe une commande avec un groupe de clients non par défaut dans un magasin où l'option Activer l'affectation automatique au groupe de clients est activée. GitHub-26976
  • La grille Clients administrateurs est désormais disponible comme prévu lorsque le site web autre que celui par défaut est supprimé dans un déploiement multisite lorsque les index sont définis sur Mettre à jour selon le calendrier. Auparavant, l’application n’affichait pas la grille et générait cette erreur : [2020-12-09 11:31:54] report.CRITICAL: The website with id 2 that was requested wasn't found. Verify the website and try again. \{"exception":"[object] (Magento\\Framework\\Exception\\NoSuchEntityException(code: 0): The website with id 2 that was requested wasn't found. Verify the website and try again. at /var/www/html/magento24ee/vendor/magento/module-store/Model/WebsiteRepository.php:110)"}

dotdigital

  • La gestion des erreurs a été améliorée lors de la récupération de listes de programmes de dotdigital Engagement Cloud.

  • La valeur synchronisée dans la colonne du nom du magasin lors de la synchronisation des invités correspond désormais au nom d’affichage du magasin comme prévu. Auparavant, le nom du site web était inclus dans cette colonne.

  • Ajout d’une vérification de la baie avant de passer en revue les automatisations de statut des commandes après l’enregistrement d’une commande.

  • Correction de problèmes liés aux mises à niveau du compositeur qui étaient le résultat de la dépendance du module dotdigital sur magento/module-authorization.

Téléchargeable

  • L'application ne répertorie plus un produit téléchargeable dans l'onglet Mes produits téléchargeables après le remboursement partiel de la commande à laquelle il appartient. GitHub-28388

VAE

  • Les attributs personnalisés qui utilisent \Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend utilisent désormais des valeurs par défaut si aucune valeur n’est fournie dans la payload lorsqu’un produit est créé par appel API.

E-mail

  • \Magento\Config\Model\Config\Source\Email\Template::toOptionArray ne renvoie plus d’erreur lorsque setPath() n’est pas appelé avant la toOptionArray(). GitHub-29315
  • L’application convertit désormais correctement du texte brut en HTML lorsque vous cliquez sur Renvoyer la version HTML lors du chargement d’un modèle d’e-mail.
  • Les e-mails envoyés aux clients qui contiennent des factures partielles incluent désormais des sous-totaux d’articles précis. Auparavant, le sous-total dans cet e-mail était le total de la quantité commandée, et non le montant total de la quantité facturée.
  • L’application envoie désormais des rappels par e-mail à tous les clients concernés avec des adresses e-mail valides. Auparavant, l’application arrêtait l’envoi d’e-mails de rappel aux clients après avoir rencontré une adresse non valide.
  • L’envoi d’e-mails de vente en mode asynchrone fonctionne désormais comme prévu après la suppression d’un produit d’un catalogue. Auparavant, l’envoi asynchrone d’e-mails était bloqué et l’application affichait cette erreur : main.ERROR: Cron Job sales_send_order_invoice_emails has an error: Call to a member function getData() on null. Statistics: {"sum":0,"count":1,"realmem":0,"emalloc":0,"realmem_start":73400320,"emalloc_start":37177640} [] []main.CRITICAL: Error when running a cron job {"exception":"[object] (RuntimeException(code: 0): Error when running a cron job at /var/www/html/vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:327, Error(code: 0): Call to a member function getData() on null at /var/www/html/vendor/magento/module-catalog/Helper/Image.php:502)"} []. GitHub-26878
  • L’application ne copie plus l’e-mail de confirmation de commande d’un client lorsque sales_email/order_comment/enabled est désactivé et que sales_email/order_comment/copy_method est défini sur bcc. GitHub-29915

Frameworks

  • Les groupes de filtres personnalisés sont désormais correctement appliqués lors de la recherche de clients. Auparavant, la fonction afterSearch n’appliquait pas les filtres OU comme prévu. GitHub-24576
  • Les images sur la page d’accueil d’un magasin sont désormais rendues correctement. Auparavant, la source de la page HTML était corrompue, car les trois barres obliques consécutives dans le code base64 de l’image étaient interprétées à tort comme un commentaire.
  • Le sélecteur de date fonctionne désormais correctement lors du filtrage des commandes de la liste Commandes d’administration dans les magasins à l’aide des paramètres régionaux arabes (ar_SA - Saudi Arabia).
  • Le sélecteur de date affiche désormais la date correcte après qu’un commerçant a enregistré une règle de prix de panier dans un déploiement. GitHub-30382
  • L’application représente désormais correctement le regroupement des milliers en arabe et les symboles séparateurs décimaux en arabe. Auparavant, les symboles arabes étaient rognés. GitHub-26676
  • L’application supprime désormais les sessions de base de données expirées de la table de session de base de données comme prévu.

Correctifs généraux

  • Vous pouvez désormais configurer un gestionnaire de sessions natif différent du gestionnaire défini dans php.ini. Auparavant, SessionManager ne définissait pas le cache mémoire comme save_handler, mais utilisait plutôt le session_handler du fichier. l’application a généré cette erreur : main.CRITICAL: Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 {"exception":"[object] (Exception(code: 0): Warning: SessionHandler::read(): open(127.0.0.1:11211/sess_0imeeaqmnvemdg4e3h57tat0ik, O_RDWR) failed: No such file or directory (2) in ../vendor/magento/framework/Session/SaveHandler/Native.php on line 22 at ../vendor/magento/framework/App/ErrorHandler.php:61)"}. GitHub-24717
  • Les améliorations suivantes ont été apportées aux modules LoginAsCustomer :

    • Remplacement du plug-in around par after

    • Suppression du code redondant

    • A remplacé (bool)->getValue() par isSetFlag. GitHub-29689

  • Le rechargement de toutes les sections de données client par caractère générique (*) n’entraîne plus l’customer/section/load d’une erreur 400 par les requêtes. GitHub-28154
  • L’application transmet désormais les exceptions qui se produisent lorsqu’une mise en page est rendue en mode de production à var/report. GitHub-29606
  • Les commerçants peuvent désormais annuler l’affectation des produits des catégories comme prévu. Auparavant, l’application générait une erreur similaire à cette erreur : Could not save product "4" with position 0 to category 3.
  • L’application renvoie désormais une exception lorsqu’un client qui n’existe pas demande une réinitialisation du mot de passe. GitHub-26288
  • L’application affiche désormais un message d’erreur informatif lorsqu’un administrateur tente d’enregistrer un compte client contenant une valeur non valide pour un attribut du client lors du chargement d’un fichier contenant cette valeur d’attribut. Auparavant, l’application générait une erreur fatale. GitHub-30295
  • L’application applique désormais le paramètre de configuration Logo pour l’affichage d’impression HTML aux PDF de facture de storefront comme prévu. GitHub-24730
  • static:: a été remplacé par self:: dans toute la base de code pour l'accès aux constantes privées. GitHub-30781
  • L’application ouvre désormais la page Nouvel attribut comme prévu lorsqu’un commerçant clique deux fois sur le bouton Créer un nouvel attribut lors de la création du produit. Auparavant, l’application affichait une page vide et générait une erreur. GitHub-30361
  • L’application n’affiche plus le message The coupon code has been accepted après la suppression d’un coupon. GitHub-30255
  • Les administrateurs peuvent désormais affecter des widgets à des catégories spécifiques. GitHub-30009
  • Le sélecteur d’attributs input[type=datetime] a été remplacé par un sélecteur de type entrée moins spécifique. GitHub-30064
  • L’application affiche désormais les valeurs spécifiques au magasin associées aux attributs de catégorie personnalisés, comme prévu. GitHub-13440
  • L’application affiche désormais une invite demandant si le groupe de clients doit être modifié lorsque vous cliquez sur le bouton Valider le numéro de TVA sur la page de création de la commande lorsque l’adresse du magasin et la destination d’expédition appartiennent à des pays de l’UE différents. GitHub-29652
  • La classe \Magento\Catalog\Model\ImageUploader a été refactorisée pour utiliser la nouvelle méthode moveFileFromTmp. GitHub-29598
  • L’application affiche désormais un message d’erreur plus informatif lorsqu’un commerçant tente de créer un attribut de produit avec des codes product_type et type_id pour être plus descriptif. GitHub-28479
  • Correction de la logique de validation des champs Durée de vie du jeton client (heures) et Durée de vie du jeton d’administration (heures) de la page Admin Magasins > Configurations > Services > OAuth. GitHub-29502
  • L’application analyse désormais correctement le texte contenant des }} dans le champ de contenu du widget. GitHub-12087
  • Vous pouvez maintenant supprimer un filtre de la page Catégories de produits. Auparavant, lorsque vous tentiez de supprimer le filtre, l’application ne vous autorisait pas à supprimer le filtre et affichait cette erreur : Something went wrong. GitHub-8538
  • Magento\Framework\MessageQueue\ConfigInterface peut désormais être instancié lorsque le module facultatif Magento_MessageQueue est désactivé. Auparavant, l’application générait cette erreur : PHP Fatal error: Uncaught Error: Cannot instantiate interface Magento\Framework\MessageQueue\ConfigInterface in /var/www/magento2/magento2/lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php:121. GitHub-26080
  • La logique qui détermine à quel moment l’application peut récupérer la valeur de l’e-mail à partir du stockage persistant a été améliorée. Auparavant, l’application affichait les champs de mot de passe renseignés sur la page de passage en caisse lorsqu’un utilisateur non enregistré revenait à la page de passage en caisse après avoir d’abord rempli le champ d’e-mail. GitHub-26903
  • Un attribut aclResource manquant a été ajouté au bloc de barre d’outils AdminNotification d’en-tête Admin. Auparavant, l’entrée de la barre d’outils de notification de l’administrateur était visible même lorsque l’utilisateur administrateur ne dispose pas des autorisations de ressources du rôle pour la voir. GitHub-29067
  • Les fonctions framework/database/select where gèrent désormais correctement les type. GitHub-29590
  • L’utilisation inefficace des array_merge dans les boucles a été améliorée dans toute la base de code, ce qui a amélioré les performances à plusieurs endroits, y compris dans le processus de déploiement de contenu statique. GitHub-30183
  • La durée de vie de session d’administrateur par défaut a été déplacée du module de chiffrement vers le module de sécurité. GitHub-30859
  • L’application recherche désormais les constantes privées dans une classe et affiche un avertissement si des appels de static:: y sont associés. Auparavant, l’application générait cette erreur : Undefined class constant.
  • Ajout de la prise en charge des root liés par des symboles dans les pages d’erreurs et le mode de maintenance. Auparavant, si les root ou les magento/pub étaient liés par un lien symbolique dans un autre répertoire, le processeur d’erreurs (Magento\Framework\Error\Processor) ne générait pas une URL de fichier d’affichage correcte. GitHub-30296
  • Tableau de order_data manquant ajouté aux classes EmailSender. Cela permet d’aligner ces classes sur la recommandation de Magento d’utiliser des variables scalaires au lieu d’objets dans les modèles d’e-mail. GitHub-29604

GraphQL

  • Le résolveur d’URL GraphQL gère désormais correctement les paramètres de requête. Auparavant, elle renvoyait la valeur NULL lors de la gestion des URL compatibles avec l’optimisation du moteur de recherche avec des paramètres.
  • Le résolveur d’URL GraphQL gère désormais correctement la hiérarchie des pages CMS. Auparavant, il renvoyait la valeur NULL. GitHub-30474
  • Les requêtes relatives aux données de categories.breadcrumbs d’un produit ne renvoient plus de données de chemin de navigation pour les catégories dont la catégorie parente est désactivée. GitHub-30468
  • Le chemin d’accès à une image de catégorie est désormais correctement renvoyé lorsque les réécritures d’URL sont désactivées.
  • L’application renvoie désormais un message plus informatif lorsqu’une erreur se produit avec lors d’une opération de réinitialisation du mot de passe GraphQL. GitHub-30179
  • Les positions des produits sont désormais mises à jour comme prévu dans les résultats de la requête GraphQL lorsque les résultats de la requête sont mis en cache.
  • La requête products renvoie désormais les résultats attendus lorsque la category_id Le filtre est spécifié avec le mot-clé in. GitHub-30349
  • Ajout de règles aux editorconfig pour la prise en charge de la mise en retrait des fichiers JSON et YAML à deux espaces. GitHub-30066, GitHub-30063
  • La classe FlushCacheByTags a été mise à jour afin d’utiliser les modules externes suivants au lieu des modules externes environnants. GitHub-29558
  • Le code du fichier checkout_index_index.xml a été amélioré par la suppression de sortOrder des composants messages, authentication, progressBar, estimation et sidebar checkout. GitHub-30550
  • Le contenu dans calc est désormais placé dans une séquence d’échappement, ce qui entraîne des valeurs de calc correctes dans le fichier de sortie CSS. Auparavant, l’application renvoyait une valeur de calc incorrecte. GitHub-30542
  • Le générateur de réécriture d’URL définit désormais les url_key, url_path et store_id de l’objet de catégorie sur les valeurs de magasin par défaut lors de l’enregistrement des réécritures d’URL de catégorie pour la portée globale. Auparavant, il enregistrait url_key, url_path et store_id avec les valeurs du dernier ID de magasin traité. GitHub-29585### Produits groupés
  • La requête de produits renvoie désormais toutes les données attendues pour les produits regroupés. Auparavant, product_links était un tableau vide.
  • Un produit regroupé est désormais répertorié comme en rupture de stock sur la page de modification du produit lorsque tous les produits enfants simples sont en rupture de stock.
  • Le statut d’un produit regroupé est désormais correctement mis à jour sur la page de modification du produit lorsque le statut de ses produits simples enfants passe à en rupture de stock. Auparavant, l'article stocké pour le parent du produit regroupé n'était pas mis à jour après que ses enfants aient modifié le statut du stock.
  • \Magento\Widget\Controller\Adminhtml\Widget\Instance\Validate reconnaît désormais une valeur de résultat d’expression comme un message d’erreur et la génère pour l’utilisateur ou l’utilisatrice lors de la validation du widget. GitHub-27397
  • La liste codée en dur des attributs de catégorie dans Magento\Catalog\Model\Category\DataProvider::getFieldsMap() a été remplacée par une liste des attributs générés à partir du cache. GitHub-13440
  • Le hachage redondant de req.http.host/client.ip a été supprimé et le hachage est géré par le VCL intégré de Varnish. GitHub-29988
  • Ajout d’un rappel d’échec au téléchargeur de fichier Magento_Ui. GitHub-29557
  • Correction d’une incohérence acl.xml qui se produisait lorsque Magento_LoginAsCustomerAssistance était activé mais que Magento_LoginAsCustomerAdminUi ou Magento_LoginAsCustomerLog étaient désactivés. Auparavant, lorsque l’administrateur disposant de ces informations d’identification tentait de se connecter à l’administrateur, l’application affichait une page vierge et générait cette erreur lorsque : Exception #0 (LogicException): Could not create an acl object: Invalid Document Element 'resource': The attribute 'title' is required but missing. Line: 13. GitHub-30680
  • L’application ne renvoie plus d’erreur de Undefined class constant lorsqu’une Interceptor est générée lors de la création du plug-in. GitHub-28981, GitHub-29879
  • L’application gère désormais correctement la messagerie et la journalisation pour les opérations en bloc asynchrones. Auparavant, bien que les produits aient été mis à jour, les tableaux magento_operation et queue_message_status n’étaient pas correctement mis à jour et les messages système étaient incorrects. GitHub-29718
  • Un acheteur est désormais redirigé vers la page Définir un nouveau mot de passe comme prévu lorsqu’il clique sur Définir un nouveau mot de passe dans l’e-mail Réinitialiser le mot de passe lorsque Exiger la confirmation des e-mails est activé pour le magasin. Auparavant, l’acheteur était redirigé vers le bouton Mot de passe oublié de la page de connexion. GitHub-27954
  • Correction de l’erreur de conversion d’un tableau en chaîne lors de l’enregistrement de la configuration du système de lignes avec les valeurs par défaut. GitHub-30314
  • Vous pouvez désormais définir des arguments pour les files d’attente de messages. GitHub-30216
  • Le collecteur de fichiers de base respecte désormais AppState->emulateAreaCode(). GitHub-39656
  • La nouvelle classe BlockByIdentifier prend en charge la récupération d’un bloc de mise en page en fonction de l’identifiant du bloc CMS. Par conséquent, lorsqu’un bloc CMS est supprimé du cache, l’application vide également le cache du bloc de disposition. GitHub-28309
  • Correction des problèmes de conversion des arguments numériques dans les files d’attente. Auparavant, lorsque vous déclariez une file d’attente avec des arguments de type numérique dans la queue_topology.xml, la valeur de l’argument était convertie en chaîne. GitHub-29615

GraphQL

  • La requête urlResolver gère désormais correctement les paramètres de requête.
  • La requête urlResolver ne renvoie plus la valeur NULL lorsqu’un nœud CMS et une page personnalisés sont spécifiés comme entrée. GitHub-30474
  • La requête category ne renvoie plus les catégories enfants d’une catégorie parent qui a été désactivée. GitHub-30468
  • La requête category renvoie désormais le chemin correct d’une image de catégorie lorsque les réécritures d’URL sont désactivées.
  • La mutation resetPassword renvoie désormais un message plus informatif lorsqu’une erreur se produit. GitHub-30179
  • Les résultats mis en cache de la requête products sont invalidés comme prévu lorsque les positions du produit changent. GitHub-30467
  • La requête products renvoie désormais les résultats attendus lorsque le filtre category_id est spécifié avec le mot-clé in. GitHub-30349
  • Les requêtes categories et categoryList prennent désormais en compte la disponibilité des catégories en fonction de la configuration des autorisations de catégorie et de l’ID de catégorie parent. GitHub-29880, GitHub-30624
  • La mutation updateProductsInWishList valide désormais correctement les éléments de liste de souhaits. GitHub-30467
  • Obsolescence de plusieurs attributs dans les ProductInterface et CategoryInterface pour empêcher leur utilisation sur le storefront. GitHub-30625

  • Les prix sont désormais masqués dans les résultats de la requête de produits lorsque les autorisations de catégorie sont définies pour les masquer. GitHub-29926

  • Vous pouvez désormais utiliser la mutation addProductsToWishList pour ajouter à une liste de souhaits un lot de produits avec une quantité définie par l’utilisateur.
  • Le temps de réponse de GraphQL pour les opérations d’ajout au panier a été amélioré.
  • La requête products renvoie désormais les valeurs de prix de niveau attendues. GitHub-29168
  • Suppression d’un getMappedNums redondant d’une boucle dans lib/internal/Magento/Framework/GraphQl/Query/EnumLookup.php. GitHub-30031
  • La requête products ne renvoie plus d’erreur lorsque le produit interrogé contient un produit associé désactivé. GitHub-28892
  • La requête cart renvoie désormais les prix qui ont été convertis dans la devise correcte (la devise d’affichage par défaut). Auparavant, la requête renvoyait la valeur du prix de l’article dans la devise de base et le code de devise était renvoyé en tant que devise d’affichage par défaut.
  • GraphQL respecte désormais les autorisations de catalogue. L’application limite les articles renvoyés pour une requête products en fonction du groupe de clients de l’acheteur.
  • Ajout de l’attribut customizable_option à plusieurs types de données qui implémentent le CartItemInterface.
  • Ajout d’attributs pour la requête storeConfig afin de renvoyer des informations sur le magasin, le groupe de magasins et le site web.
  • Restauration de l’attribut SelectedCustomizableOption.type. En outre, l’attribut customizable_options dans différentes implémentations de la CartItemInterface est désormais non nul.
  • La fonctionnalité de recherche de la requête products ne renvoie plus les éléments dans lesquels les autorisations de catégorie ont été activées.
  • La requête products renvoie la devise correcte pour les vues de magasin comportant plusieurs devises.
  • Les libellés des filtres de requête products renvoient désormais les valeurs traduites, le cas échéant pour les vues de magasin autres que celles par défaut.
  • Fixez les montants en devise du magasin sur les cartes-cadeaux du panier.
  • Ajout du type de données ConfigurableProductOptionsSelection , qui contient des métadonnées correspondant aux options configurables sélectionnables pour un produit. Utilisez cet objet dans une requête products pour réduire le nombre d’éléments de galerie de médias affichés lorsque l’acheteur sélectionne des options de produit configurables.

Images

  • Les images sur la page d’accueil d’un magasin sont désormais rendues correctement. Auparavant, la source de la page HTML était corrompue car les trois barres obliques consécutives dans le code base64 de l’image étaient interprétées à tort comme un commentaire.
  • La dépendance sur l’extension fileinfo a été supprimée du module CMS. Auparavant, l’application générait une erreur lorsque vous tentiez de charger une image à l’aide du chargeur d’images, qui s’affiche lorsque vous cliquez sur le bouton Insérer une image lors de l’ajout de contenu. GitHub-24332, GitHub-16531, GitHub-29852
  • Ajout de la prise en charge de la lecture de métadonnées exif_image.png ou exif-image.jpeg. GitHub-1449
  • Les couleurs des images CMJN sont désormais correctement rendues. Lorsque l’adaptateur Imagick détecte désormais qu’une image ouverte a un espace colorimétrique CMJN, l’espace colorimétrique est converti en SRGB. Auparavant, ces images étaient rendues avec des couleurs inversées. GitHub-22375
  • Les valeurs booléennes ne sont plus définies pour image_with_border.phtml. Les paramètres max-width et height redondants ont été supprimés d’.product-image-photo. (Ces valeurs sont déjà définies globalement sur l’image via les styles de réinitialisation.) GitHub-30186

Importer/exporter

  • Une valeur region_id n’est plus affectée à l’adresse du client NULL lorsque vous importez des adresses de clients à l’aide d’un fichier CSV (entity type = "customer address" et import behavior = "add/update") à partir duquel certaines valeurs de champ ont été supprimées.
  • Vous pouvez désormais masquer les images du produit sur le storefront lors de l’importation.
  • Lorsqu’un produit importé a qty défini sur 0 mais is_in_stock set sur 1 dans le fichier CSV, le produit n’est pas répertorié sur la page des catégories et la page des détails du produit l’identifie comme étant en rupture de stock. Auparavant, les produits disposant de ces valeurs étaient visibles sur le storefront après l’importation.
  • L’importation CSV n’ignore plus les valeurs dropdown et textarea pour les attributs supplémentaires. Auparavant, ces valeurs d’attribut n’étaient pas mises à jour lors de l’importation.
  • Le fichier CSV d’exportation de produit apparaît désormais comme prévu dans la liste des administrateurs des fichiers CSV d’exportation. Auparavant, l’application générait une erreur lorsque vous exécutiez cette commande : bin/magento queue:consumers:start exportProcessor --single-thread --max-messages=10000.
  • L’application ne renvoie plus d’erreur lors de l’importation de données CSV contenant des caractères bengalis (bengali).
  • L’application affiche désormais un message d’erreur informatif lorsqu’un administrateur clique sur Vérifier les données lors de l’importation d’un fichier qui a été modifié depuis l’exportation lors de l’utilisation de Chrome. Auparavant, l’application affichait une erreur de console, mais n’indiquait pas à l’utilisateur comment procéder.
  • L’application ne duplique plus les images de produit lorsque vous importez les mêmes données CSV de produit plusieurs fois. GitHub-21885
  • Suppression de la limite de 90 caractères pour les noms de fichiers image dans vendor/magento/framework/File/Uploader.php. Auparavant, la longueur du répertoire et du nom de fichier ne pouvait pas dépasser 255 caractères. L’application a importé des produits avec des images dont le nom de fichier dépassait cette limite, mais n’a pas importé le fichier image. GitHub-29377
  • Les codes promotionnels peuvent désormais être exportés au format CSV ou XML. Auparavant, l’application affichait une erreur 404 lorsque vous cliquiez sur Exporter au format CSV ou Exporter au format XML lorsque vous tentiez d’exporter des coupons. GitHub-29277
  • Les images de produit dupliquées sont désormais supprimées après l’importation d’un fichier CSV contenant des images. GitHub-14398, GitHub-21885

Index

  • Nous avons amélioré les performances de l’indexeur partiel. L’application efface désormais les ID de cache qui ont été modifiés pour chaque itération par lots de 1 000 ID. Le contexte de cache n’accumule plus d’ID. Auparavant, le contexte de cache accumulait les ID de cache pour chaque itération de lot de 1 000 ID et effaçait le même ensemble d’ID à chaque itération.
  • Les incohérences entre le système de réindexation partielle et le système de réindexation complet ont été corrigées. Les deux systèmes d’indexation utilisent désormais le même code, ce qui fonctionne correctement. Auparavant, les deux systèmes d’indexation utilisaient une logique différente en ce qui concerne les indexeurs partagés, ce qui entraînait potentiellement l’invalidation des indexeurs après chaque exécution du système de réindexation partielle. GitHub-29478, GitHub-29297
  • Nous avons résolu des problèmes avec l’indexeur manuel qui entraînaient soit des pages de catégorie vides, soit une réduction du nombre de produits sur les pages de catégorie. Des problèmes liés à des pages de catégorie ou à un nombre de produits incomplets se sont produits lorsque :

    • les indexeurs partiels catalogsearch_fulltext et catalog_product_price ont été exécutés sur un catalogue volumineux jusqu’à ce que ces indexeurs terminent leur exécution.

    • l'indexeur partiel a été exécuté sur les index catalog_category_product ou catalog_product_category, et en même temps une réindexation complète a été exécutée sur l'un de ces index. Ces deux processus d’indexation pouvaient entrer en conflit, ce qui entraînait l’absence de produits dans les pages de catégorie.

    • bin/magento indexer:reindex inventory a été exécuté sur un catalogue volumineux. Les produits étaient absents des pages de catégorie jusqu’à ce que l’indexeur partiel catalogsearch_fulltext termine son exécution.

  • Un indexeur a été ajouté à la table MySQL Magento_Bulk, ce qui a amélioré les performances des opérations en masse.
  • Les commentaires dans les tables de base de données reflètent désormais précisément le statut de la table après réindexation (bin/magento indexer:reindex). Auparavant, les commentaires du tableau après la réindexation contenaient les mêmes valeurs que les commentaires laissés après une nouvelle installation.
  • L’instruction SELECT entity_id IN a été améliorée dans les déploiements mettant en œuvre MariaDB v.10.3.18, ce qui a amélioré les performances de l’indexation des catégories de catalogue. GitHub-25199
  • Magento Open Source a amélioré les performances du cache en éliminant le vidage des balises plusieurs fois par instance d’indexeur. GitHub-29890

Infrastructure

  • Vous pouvez désormais utiliser app/etc/env.php pour remplacer le courtier de messages MYSQL par AMQP.
  • Les problèmes liés au calcul des restes pour les valeurs décimales des quantités de produits ont été corrigés dans la bibliothèque JavaScript appropriée. L’application calculait auparavant de manière incorrecte des fractions décimales de plus de deux chiffres et affichait ensuite un message incorrect.
  • La méthode \Magento\Authorization\Model\Rules::update a été abandonnée. GitHub-29128
  • L’application ne renvoie plus d’erreur fatale lors de la conversion d’un objet de date au format UTC. Auparavant, sous certaines conditions, la méthode convertConfigTimeToUtc générait une exception. GitHub-29525
  • DataObject a été remplacé par le modèle de produit dans \Magento\MediaGalleryCatalogUi\Ui\Component\Listing\Columns\Thumbnail::prepareDataSource.GitHub-1711
  • Le résolveur RequireJS ne parvient plus à détecter les ressources bloquées. Auparavant, le programme de résolution ne détectait pas correctement si toutes les ressources d’une page étaient chargées ou traitées de manière appropriée et la page continuait à se charger. GitHub-28116
  • La validation du code du référentiel d’attributs respecte désormais la Magento\Eav\Model\Entity\Attribute::ATTRIBUTE_CODE_MAX_LENGTH plutôt qu’une valeur codée en dur. GitHub-29017
  • La minimisation d’HTML n’efface plus les barres obliques triples (https://experienceleague.adobe.com//?lang=fr) des chaînes HTML dans les fichiers HTML. Auparavant, les triples barres obliques étaient interprétées comme des commentaires lors de la minimisation, et le reste de la ligne était complètement supprimé dans le fichier HTML généré lors du déploiement.
  • Les commerçants peuvent désormais configurer les abonnements de l’indexeur au niveau de la colonne du tableau plutôt qu’au niveau du tableau. Un nouvel argument a été ajouté à \Magento\Framework\Mview\View\Subscription pour permettre d'ignorer les colonnes pour une combinaison de vue ou de tableau spécifique. GitHub-30243
  • Cliquer sur le bouton Ajouter au panier avant que le JavaScript de la page produit ne soit entièrement initialisé n’entraîne plus la duplication des valeurs de form_key. Auparavant, un produit pouvait être ajouté au panier avec une valeur de form_key mise en cache qui déclenchait une exception. Lorsque l’utilisateur a cliqué sur Ajouter au panier avant l’initialisation complète du JavaScript, la valeur de form_key envoyée dans les données de formulaire ne correspondait pas à la session des utilisateurs et utilisatrices, et le produit n’a pas été ajouté au panier. GitHub-13746
  • Le client cURL actuel respecte désormais les noms d’en-tête insensibles à la casse. Auparavant, la comparaison des Set-Cookie était sensible à la casse, ce qui pouvait entraîner des problèmes avec certains serveurs HTTP. GitHub-29524
  • Mise à jour du format d’URN XSD dans les fichiers XML de api-functional et de cas de test. GitHub-30552
  • Un préfixe d’événement et un objet d’événement ont été ajoutés à la collection de valeurs d’options de produit du catalogue afin d’améliorer la personnalisation du chargement de la collection de \Magento\Catalog\Model\ResourceModel\Product\Option\Value\Collection. GitHub-29621
  • Toutes les occurrences de array_merge ont été refactorisées pour utiliser le format recommandé dans la norme de codage. GitHub-30005
  • Un bloc head.additional de type \Magento\Framework\View\Element\Text\ListText a été ajouté à la mise en page adminhtml default (par magento2/module-base). GitHub-29165
  • Ajout de la méthode d’URL d’échappement manquante au widget du module de modèle de mise en page. GitHub-30036
  • La méthode \Magento\Framework\Filesystem\Io\File::read() est désormais compatible avec \Magento\Framework\Filesystem\Io\IoInterface::read(). GitHub-27866

Klarna

  • Suppression de la dépendance sur le module PayPal. GitHub-29421

Journalisation

  • Le module Magento_Logging a désormais correctement enregistré les nouvelles valeurs ainsi que les valeurs qui les ont précédées. Auparavant, les valeurs de la colonne Valeur avant modification affichaient les valeurs N/A, qu’il s’agisse de la première modification ou de la suivante, ou lorsque la valeur par défaut était renvoyée. GitHub-26943

Galerie de médias

  • La page Admin Magasins > Configuration > Avancé > Système a été mise à jour afin d’afficher le nom correct du produit (Galerie de médias). Des modifications mineures ont été apportées à l’interface utilisateur d’. GitHub-1738
  • Les liens de la section Utilisé(e) dans les descriptions d’image de la Galerie de médias affichent désormais une grille qui a été filtrée par l’image sélectionnée comme prévu. Auparavant, le titre de la grille affichée n’était pas correct et les entrées de liste n’étaient pas exactes. GitHub-1694
  • Vous pouvez désormais modifier plusieurs images dans la Galerie de médias. Auparavant, vous ne pouviez pas ajouter de balises à une deuxième image après l’avoir fait sur une seule image. GitHub-1755
  • Le menu déroulant Balises est désormais vide, comme prévu, après la suppression de balises d’une image dans la Galerie de médias. GitHub-1703
  • Le traitement par lots des messages de file d’attente de synchronisation de Media Gallery est désormais pris en charge. GitHub-1724
  • L’application affiche désormais une page 404 comme prévu lorsque vous essayez d’ouvrir la Galerie de médias lorsque la Galerie de médias améliorée est désactivée. GitHub-1760
  • MediaGalleryMetadata ignore désormais le lecteur de segment si une exception se produit et analyse et affiche à la place les métadonnées d’image comme prévu. Auparavant, les métadonnées de l’image étaient vides en raison d’une exception du lecteur de segments exif_read_data. GitHub-1782
  • La longueur du nom du dossier n’empêche plus le chargement d’une image vers la Galerie de médias. Media Gallery définit désormais la colonne de chemin comme type text. GitHub-1778
  • Le chargeur d’images affiche désormais la taille d’image correcte lorsqu’un rendu est inséré à partir de Media Gallery. GitHub-1806
  • La vérification du chemin d’accès a été ajoutée au plug-in de téléchargement Mediagallery. Auparavant, la validation échouait et l’application n’importait pas de produits lorsque Activer l’ancienne galerie de médias était désactivé. GitHub-30649
  • Magento_Cms::media_gallery sous-ressources ACL ont été ajoutées et appliquées pour que la nouvelle galerie de médias prenne en charge les autorisations configurées pour les opérations discrètes suivantes :

    • Chargement de ressources
    • Insertion de ressources dans le contenu
    • Suppression de ressources
    • Créer des dossiers
    • Supprimer des dossiers. GitHub-1487
  • Les longues chaînes de texte et les noms de dossier de la Galerie de médias ne sont plus recadrés. Auparavant, l’application affichait du texte et des images recadrés et affichait le message suivant : We couldn't find any records. GitHub-1763, GitHub-1758
  • L’application n’affiche plus le bouton Ajouter la sélection lorsqu’aucune image n’est sélectionnée lors de la modification du contenu d’une nouvelle page. GitHub-1769
  • Les filtres sont désormais appliqués comme prévu sur la grille de catégories Contenu > Galerie de médias. GitHub-1763
  • La configuration des options de multiplication de point d’arrêt de la Galerie fonctionne désormais comme prévu. Auparavant, la configuration des options de point d’arrêt ne fonctionnait pas correctement, car mediaCheck déclenchait la fonction de requête de média de sortie au chargement de la page. GitHub-29933

MFTF

  • Remplacement des actions répétitives par des groupes d'actions dans CheckStaticBlocksTest. GitHub-30561
  • AdminUpdateCategoryAndMakeInactiveTest et VerifyChildCategoriesShouldNotIncludeInMenuTest ont été restructurés pour se conformer aux meilleures pratiques de la MFTF. GitHub-30058
  • Suppression des AdminOpenCMSBlocksGridActionGroup dupliquées. GitHub-30896
  • Remplacement de AdminOpentCmsBlockActionGroup par AdminOpenCmsBlockActionGroup. GitHub-29839
  • Ajout de groupes d’actions au module Analytics . GitHub-29500
  • Mise à jour des CheckCheckoutSuccessPageAsRegisterCustomerTest et des CheckCheckoutSuccessPageAsGuestTest pour annuler les commandes créées après l’exécution des tests. GitHub-28324
  • Suppression de AdminNavigateToPageGridActionGroup en raison d’une redondance. GitHub-29838
  • Implémentation de ActionGroup pour accéder à la page de passage en caisse. GitHub-29843
  • Implémentation de AdminOpenCreateNewCMSPageActionGroup pour accéder à la création d’une page CMS. GitHub-29824
  • Correction de problèmes liés à l’omission dans les tests MFTF pour la page CMS pour la galerie de médias. GitHub-30164

Nouveaux tests

  • Ajout d’un test pour activer l’envoi d’e-mails à un ami dans l’administrateur. GitHub-29145
  • Ajout d’un test pour la suppression d’un bloc CMS d’une grille par un administrateur. GitHub-30372
  • Ajout d’un test pour appliquer une règle de panier à un seul article groupé. GitHub-28921
  • Ajout de tests pour vérifier si les informations Utilisé dans pour une image de la Galerie de médias s’affichent après la suppression de l’entité. GitHub-1774

Nouveaux groupes d’action

Newsletter

  • Les utilisateurs administrateurs peuvent désormais modifier un compte client comme prévu lorsque le client est abonné à une newsletter mise en file d’attente. GitHub-30645
  • L’application envoie désormais à nouveau la confirmation d’inscription à la newsletter si l’acheteur ne confirme pas son inscription à la newsletter. GitHub-28422
  • Vous pouvez désormais modifier un compte client comme prévu lorsqu’un client est abonné à une newsletter mise en file d’attente. GitHub-30645

Modes de paiement

  • Les modes de paiement sont désormais chargés dans l’administration pour tous les sites web, comme prévu dans un déploiement multi-magasin.
  • L'application effectue désormais correctement les paiements Payflow Pro lorsque le nom de l'acheteur contient des lettres accentuées. Auparavant, le paiement n’était pas terminé et l’application a consigné cette erreur : report.CRITICAL: String to be escaped was not valid UTF-8 or could not be converted.

PayPal

  • Les commerçants peuvent désormais passer une commande auprès de l’administrateur après être passés d’un mode de paiement par carte de crédit à un mode de paiement sans carte de crédit. Auparavant, lorsqu’un commerçant cliquait sur le bouton Soumettre la commande, le processus de chargement démarrait mais n’était jamais terminé et la commande n’était pas passée.
  • L'application ne crée plus de commandes en double lorsqu'une commande est passée avec PayPal Express. Auparavant, lorsqu’un acheteur tentait de payer une commande avec PayPal Express, mais que PayPal renvoyait une erreur, l’application créait toujours la commande. Il en a résulté des commandes en double sur le site du commerçant. GitHub-13952
  • Les rapports de règlement PayPal sont désormais disponibles à l’adresse Rapports > Ventes > Règlement PayPal comme prévu. Auparavant, l'application ne répertoriait pas ces rapports sur la grille de rapports de règlement PayPal et affichait le message suivant : We couldn't find any records.
  • Cliquer sur le bouton PayPal lors du passage en caisse ne déclenche plus d’appel web-api redondant. Auparavant, deux demandes étaient déclenchées, ce qui doublait la facture du produit.
  • Les acheteurs invités peuvent désormais passer des commandes PayPal lorsque l'option Affectation automatique au groupe de clients est activée. Le paiement est traité sur la passerelle PayPal, la commande est créée dans Magento et l’acheteur voit la page de remerciement de la commande. Auparavant, la commande était traitée avec succès sur la passerelle PayPal, mais elle n’était pas créée dans Magento Open Source. L’acheteur a été redirigé vers la page de révision de la commande, où l’application affichait cette erreur : Failed address validation: %1" error. GitHub-25399

Performances

  • Magento_Csp/Model/BlockCache a été refactorisé pour réduire à la fois la consommation de mémoire et la génération de chaînes mises en cache inutilement volumineuses. Auparavant, les pages qui incluaient des scripts et des styles placés dynamiquement sur la liste autorisée rencontraient souvent des problèmes de performances. GitHub-29964
  • Nous avons amélioré la performance des exportations planifiées de catalogues qui incluent plus de 100 000 produits utilisant des consommateurs.
  • L’application ne vide plus le cache de catégorie lorsque vous ajoutez ou enregistrez un produit désactivé dans une catégorie. Auparavant, l’application vidait le cache pour les catégories associées malgré l’état du produit, ce qui affectait les performances du serveur.
  • Le temps de chargement des pages pour mettre à jour la quantité de produits dans le panier a été amélioré. Auparavant, l’application exécutait plusieurs requêtes distinctes pour chaque produit du panier, ce qui augmentait le temps de chargement des pages.
  • Un indexeur a été ajouté à la table MySQL Magento_Bulk, ce qui a amélioré les performances des opérations en masse.
  • L’application met désormais en cache les identifiants enfants des produits configurables. Cela a amélioré les performances de chargement des pages en réduisant le nombre de requêtes en base de données. GitHub-30585
  • Le chargement du tableau de bord d’administration a été amélioré. Auparavant, l’application affichait les noms des onglets sous forme de liste avant que le chargement de la page ne soit terminé.
  • La gestion du cache Redis a été améliorée grâce à l’ajout de limites d’expiration pour les caches de disposition. Auparavant, les caches Redis atteignaient rapidement la mémoire maximale allouée dans les déploiements importants et l’application générait des erreurs lors des opérations d’écriture.
  • Les performances de l’extraction ont été améliorées par la suppression d’une requête de base de données redondante dans app/code/Magento/Catalog/Model/CategoryLink.php. GitHub-29453
  • Magento\Framework\DB\Adapter\Pdo\Mysql->isTableExists a été refactorisé pour améliorer les performances. Les appels redondants à SHOW TABLE STATUS pour vérifier l'existence d'une table ont été réduits. GitHub-29662
  • getPageLayoutsConfig est désormais enregistré dans le cache, ce qui a amélioré les performances du créateur de configuration. GitHub-29546

Persistant

  • Les acheteurs ne peuvent plus passer de commande après l’expiration de leur cookie de session lorsque le panier persistant est activé. Au lieu de cela, l’application affiche la page de connexion afin que l’acheteur puisse se connecter. Auparavant, l’application passait la commande. L’application ne validait pas correctement le client persistant lorsque PHPSESSID avait expiré et customerSession était recréé à partir des informations persistantes.
  • L’application affiche désormais le message de bienvenue comme prévu lorsqu’un acheteur se connecte à un magasin où le panier persistant est activé. Auparavant, l’application affichait la mention Pas vous ? le message après la connexion.
  • L’application n’affiche plus le Pas vous ? du texte lorsqu’un client sélectionne l’option Mémoriser mon nom lors de la connexion à un déploiement où le panier persistant est activé.
  • L’application n’affiche plus le contenu du panier d’un client ou d’une cliente après l’expiration de la session cliente. Auparavant, l’application affichait cette erreur lorsqu’un client invité tentait de passer en caisse lorsqu’un panier persistant était activé : No such entity with cartid = 0.

Tarification

  • Les mises à jour de prix asynchrones consécutives n’interfèrent plus les unes avec les autres et le statut correct est attribué à chaque opération. Auparavant, si une mise à jour de prix asynchrone échouait, toutes les mises à jour de prix asynchrones suivantes échouaient jusqu’à ce que le client de file d’attente correspondant soit redémarré. GitHub-27865

Rapports

  • Rapports > Marketing > Produits dans les paniers affiche désormais uniquement l’enregistrement dans la portée autorisée de l’utilisateur qui génère le rapport. Auparavant, toutes les données étaient disponibles pour toutes les portées.
  • L’application utilise désormais la devise spécifiée dans la portée du rôle du commerçant qui génère le rapport lors de l’affichage de la devise du produit dans le rapport Produits dans le panier .
  • Les fonctionnalités de produit Récemment consultés et Récemment comparés affichent désormais des statistiques pour différents magasins et sites web dans l’administration, comme prévu dans un déploiement multi-magasin. Auparavant, ces fonctionnalités ne prenaient pas en compte tous les magasins ou sites web.
  • Les prix dans les rapports de commande utilisent désormais le symbole de devise correct.
  • L’application vérifie désormais l’existence d’un jeton lorsqu’un utilisateur clique sur le bouton Accéder au rapport avancé du tableau de bord d’administration. Si le jeton existe, l’application affiche la page Rapports avancés . Si le jeton n’est pas configuré, l’application affiche une page d’information dans le guide de l’utilisateur. GitHub-25411

Examens

  • La page Nouvelle révision se charge désormais comme prévu lorsque vous cliquez sur le bouton Nouvelle révision dans Admin Marketing > Toutes les révisions. Cliquez sur un produit sur cette page pour ouvrir le nouveau formulaire de révision attendu pour ce produit.
  • L’application ne renvoie plus cette erreur lorsque vous tentez de modifier une commande à partir de Admin Marketing > Toutes les révisions : Uncaught TypeError: Event.observe is not a function. GitHub-30388

Ventes

  • La colonne order_created_at du sales_shipment_grid est désormais mise à jour comme prévu après chaque mise à jour.
  • Vous pouvez désormais commander à nouveau un produit avec une date d’options personnalisées dans un magasin pour lequel Utiliser le calendrier JavaScript est activé. Auparavant, lorsque vous tentiez de commander à nouveau, l’application n’ajoutait pas l’article au panier et affichait cette erreur : Could not add the product with SKU "simp1" to the shopping cart: Please specify date required option(s).
  • L’application ne ferme plus immédiatement une commande lorsqu’un acheteur extrait une commande qui consiste en un produit virtuel avec un coût total de 0 $ dans les déploiements où la méthode de passage en caisse avec zéro sous-total est activée.
  • L’application n’archive plus une commande avant de la traiter. Auparavant, l’action Sélection multiple sur la grille de commandes de l’administrateur affectait les commandes non sélectionnées.
  • La grille d'avoir affiche désormais le symbole de devise correct lorsque le rial saoudien (SAR) est défini comme devise de base.
  • L’application affiche désormais systématiquement les informations sur l’adresse de livraison comme prévu sur la page de commande lors du passage en caisse.
  • La valeur de total_qty correspond désormais à la valeur de total_qty_ordered dans les factures vente.
  • L’envoi asynchrone d’e-mails de ventes envoie désormais un e-mail uniquement pour les commandes qui ont été créées après la date de la dernière mise à jour. Auparavant, l’application ne filtrait pas les e-mails par date lorsque l’envoi asynchrone était activé.
  • L’application envoie désormais la facture par e-mail comme prévu lorsqu’une commande est passée auprès de l’administrateur.
  • L’application efface désormais les données de commande existantes au cours d’une session lorsqu’un commerçant crée une commande pour un client à partir de l’administrateur.
  • Vous pouvez désormais modifier le groupe de clients pour les nouveaux clients créés par le biais d'une commande administrateur lorsque l'option Activer l'affectation automatique au groupe de clients est activée. Vous pouvez également affecter un groupe de clients en fonction de la validation de la TVA. Auparavant, lors de la validation du numéro de TVA, l’objet de la demande ne vérifiait pas le group_id de demande affecté. Par défaut, il utilise le group_id par défaut.
  • L’application ne modifie plus le statut d’une commande personnalisée avec Suspected Fraud statut en Processing après qu’un commerçant a créé une expédition partielle à l’aide de l’API REST.

Règle de vente

  • Les codes promotionnels qui ont été appliqués en fonction du mode d’expédition ne sont plus appliqués lorsqu’un acheteur change de mode d’expédition. Auparavant, l’application n’effaçait pas les codes de coupon lorsque les acheteurs changeaient de mode d’expédition.
  • Les acheteurs ne peuvent pas appliquer un code de coupon plus fréquemment que ne le permet le paramètre Utilise par client. Auparavant, si un acheteur ouvrait plusieurs fenêtres de navigateur et passait plusieurs commandes simultanément, chaque commande recevait la remise, même si la valeur du paramètre Utilisations par client était de 1.

Rechercher search-heading

  • Elasticsearch ne renvoie plus d’erreur de modificateur inconnu lorsqu’un acheteur effectue une recherche sur un synonyme de recherche. Auparavant, il manquait une barre oblique d'échappement dans les expressions régulières, ce qui entraînait une erreur fatale.
  • La recherche avancée ne renvoie plus les enfants de produits configurables comme résultats de recherche individuels lorsque les produits enfants ont été configurés avec une visibilité définie sur Non visible individuellement.
  • Le type de noms de produits Elasticsearch dans les résultats de recherche n’est plus sensible à la casse.
  • La page des résultats de recherche est désormais mise en cache comme prévu lorsque le paramètre définir le nombre de résultats de recherche principaux à mettre en cache sur 0 est activé dans Admin Magasins > Configuration > Catalogue > Catalogue > Catalog Search.
  • L’indexeur de recherche catalogue s’exécute désormais sans générer d’erreur en raison de la limite de champs d’Elasticsearch. Auparavant, l’application générait cette erreur : Limit of total fields [xxx] in index [m24dev_product_1_v10] has been exceeded.
  • Les performances de la recherche catalogue se sont améliorées. La désactivation de Activer les suggestions de recherche (Magasins > Configuration > Catalogue > Recherche catalogue ) fonctionne comme prévu. Auparavant, l’application demandait des suggestions de recherche de saisie automatique dans la table search_query MySQL plutôt que dans Elasticsearch. GitHub-25534
  • Elasticsearch filtre désormais les prix des produits de la même manière que MySQL. Le type de champ price_* a été modifié de float en double dans l’index Elasticsearch afin d’améliorer la précision et de corriger une erreur à virgule flottante.
  • Un écouteur d’événement de keydown a été ajouté à l’administration pour activer le formulaire de recherche globale lorsqu’une barre oblique est saisie. GitHub-29551
  • Elasticsearch ne renvoie plus d’erreur, mais n’affiche aucun produit comme prévu lorsqu’une valeur string est utilisée pour filtrer les produits par attribut avec un type principal integer ou decimal. Auparavant, l’application affichait cette erreur dans exception.log : number format exception.
  • Elasticsearch ne renvoie plus d’exception lorsqu’un terme de recherche contient un /. GitHub-25886, GitHub-25110

  • La recherche est désormais désactivée comme prévu pour un groupe de clients sélectionné à partir de la requête de produits lorsque le paramètre de configuration Interdire la recherche catalogue par dans les autorisations générales des catégories est activé. GitHub-29927

  • Les résultats de recherche n’incluent plus plusieurs citations du même mot. GitHub-30104

Expédition

  • Le processus de passage en caisse n’échoue plus lorsqu’une interruption du réseau interrompt la connexion à la méthode d’expédition DHL. Au lieu de cela, l’application affiche d’autres méthodes d’expédition disponibles. Auparavant, le processus de passage en caisse se bloquait lorsque la connexion à l’expédition DHL était interrompue et l’application affichait cette erreur : Sorry, no quotes are available for this order at this time. GitHub-29902
  • Les champs qui décrivent la méthode de diffusion UPS dans Admin Magasins > Configuration > Ventes > Méthodes de diffusion sont désormais activés comme prévu.
  • Les expéditions créées via le point d’entrée POST /rest/V1/shipment mettent désormais correctement à jour les commandes. Auparavant, l'application créait une expédition, mais le statut de l'expédition restait à l'état Traitement.
  • L’application ne supprime plus les produits simples du panier lorsqu’un autre produit est supprimé du panier avant le passage en caisse avec des adresses d’expédition multiples. GitHub-30259
  • La page Vérification de commande affiche désormais le montant de taxe avant le montant d'expédition comme prévu pour les commandes expédiées à plusieurs adresses.
  • Le suivi des expéditions UPS indique désormais un statut de Delivered On uniquement lorsqu'un colis a été livré. GitHub-30032
  • L’application affiche désormais le sous-total du panier correct pour les commandes contenant un produit virtuel lorsque l’acheteur revient à son panier à partir de la commande avec plusieurs adresses.
  • Les commerçants peuvent désormais créer une étiquette d'expédition à partir de la page d'expédition pour une commande existante qui utilise l'expédition FedEx lorsque le regroupement JavaScript est activé. Auparavant, l’application générait une erreur lorsque le commerçant cliquait sur le bouton Créer une étiquette d’expédition.
  • Le lien de suivi des expéditions dans l’e-mail de confirmation d’expédition envoyé aux clients fonctionne désormais comme prévu. Auparavant, ce lien renvoyait une erreur 404.
  • L’application affiche désormais un message d’erreur informatif lorsqu’un acheteur passe en caisse à l’aide de plusieurs adresses, puis supprime tous les produits autres qu’un produit virtuel. GitHub-25595
  • Vous pouvez maintenant créer une étiquette d'expédition comme prévu pour une commande partielle. Auparavant, lorsque vous tentiez de créer une étiquette d'expédition pour un seul article d'une commande, l'application ajoutait tous les produits au package et la validation échouait. GitHub-29552
  • La validation de la méthode d’expédition n’est plus ignorée lors de l’appel de /V1/guest-carts/:cartId/totals-information. GitHub-25147

Plan du site

  • Les plans de site générés par cron incluent désormais les URL d’image correctes. Auparavant, le chemin d’accès de l’image mise en cache générée était incorrect dans les déploiements multi-magasin.

Stocker

  • L’administrateur et le sélecteur de magasin principal reflètent désormais les modifications apportées à l’ordre de tri des magasins dans l’administrateur. GitHub-13401
  • L’application crée désormais des URL correctes pour les catégories et les produits après modification de la clé URL de niveau supérieur d’une vue de magasin. Auparavant, lorsque l’arborescence des catégories d’une vue de magasin contenait des url_keys modifiées, si une clé de catégorie ne changeait pas mais que la clé des parents de catégorie la modifiait, le code d’origine utilisait l’affichage de magasin par défaut de la catégorie lors de la création d’URL. GitHub-28633

Règles de Target

  • Le chargement des pages de détails du produit a été optimisé. Nous avons ajouté des index pour les tables de base de données qui optimisent les requêtes de conditions de règles cibles pour de nombreux cas.

Taxe

  • La validation de la TVA sur une commande client n'entraîne plus la sauvegarde du devis par l'application avec une classe de taxe client incorrecte. GitHub-30018
  • Les commandes envoyées à plusieurs adresses peuvent désormais être enregistrées lors du passage en caisse lorsque le protocole FPT est configuré. Auparavant, après avoir passé une commande pour plusieurs adresses, l’application affichait une page vierge au lieu de la page de réussite de la commande.
  • Les pages de détails des produits Storefront affichent désormais les anciens et nouveaux prix avec et sans taxe comme prévu. GitHub-27500, GitHub-11998

Test

  • bin/magento dev:tests:run lance maintenant les tests suivants comme prévu : all, unit, integration-all, static, static-all, integrity, inheritance et default.
  • AdminMediaGalleryInsertLargeImageFileSizeTest a été refactorisé.
  • Les tests unitaires sont désormais compatibles avec PHPUnit 8. GitHub-29779
  • \Magento\TestFramework\TestCase\WebapiAbstract contient désormais une fonction qui prend en charge la comparaison de grands tableaux imbriqués de résultats attendus et réels dans les tests. Les clés non pertinentes dans le résultat peuvent maintenant être ignorées. GitHub-29498
  • AdminMediaGalleryCatalogUiEditCategoryGridPageTest n’échoue plus de manière aléatoire. GitHub-1764
  • dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest a été amélioré. (assert est désormais basé sur XPath sélecteur au lieu de assertStringContainsString.) GitHub-29700
  • Ajout de la couverture de test pour le module AdminAnalytics. GitHub-29500
  • Les tests fonctionnels d’intégration et d’API sont désormais compatibles avec PHPUnit 9.3. GitHub-30146
  • Correction de problèmes liés au test de testRequestCacheTagsForCategoryListOnMultipleIds GraphQL. GitHub-29372
  • Les valeurs d’en-tête qui incluent des URL sont désormais correctement analysées dans ApiFunctional TestFramework. GitHub-26425
  • Correction de problèmes liés au test de testRequestCacheTagsForCategoryListOnMultipleIds GraphQL. GitHub-29372
  • —no-tablespaces a été ajouté à toutes les occurrences de mysqldump, ce qui permet aux tests d’intégration de s’exécuter sans le privilège PROCESS (requis depuis MySQL 5.7.31 / 8.0.21 pour s’exécuter mysqldump par défaut). GitHub-30566

Thème

  • Un nouvel indicateur de --no-parent a été ajouté à la commande bin/magento setup:static-content:deploy qui empêche la compilation du ou des parents d’un thème. Ce nouvel indicateur vous permet d’améliorer considérablement les performances du processus de déploiement de contenu statique en évitant une compilation inutile. Notez que ce nouvel indicateur ne fonctionne pas lors de l’utilisation de la stratégie compact. GitHub-30184
  • La configuration de conception ne génère plus d’opérations DDL. Auparavant, lorsque la configuration de conception était mise à jour, l’application générait des instructions DDL qui pouvaient déclencher des erreurs MySQL.
  • Le code redondant du module Magento_ConfigurableProduct dans le thème Admin a été supprimé. GitHub-29857
  • Les styles de navigation redondants et les propriétés inutilisées dans le thème vierge ont été supprimés. GitHub-29914
  • Ajout d’une fonctionnalité de navigation réductible au Thème vierge en mode mobile. GitHub-30237
  • Le chargement des polices web pour les thèmes a été optimisé. GitHub-29526
  • L’équipe de développement peut désormais spécifier un type de police lors de la déclaration d’une police personnalisée dans un thème. GitHub-29719

Traduction et paramètres régionaux

  • Le sélecteur de date de la grille Commandes d’administration fonctionne désormais comme prévu lorsque les paramètres régionaux d’administration sont en arabe (ar_SA - Saudi Arabia).
  • L’application n’affiche plus de message d’erreur lorsqu’un acheteur saisit une adresse argentine avec un code postal valide lors de l’enregistrement ou de l’ajout d’une nouvelle adresse. Auparavant, l’application affichait cette erreur : Provided Zip/Postal Code seems to be invalid. Example: 1234. If you believe it is the right one you can ignore this notice.
  • L’application ne renvoie plus d’erreur lorsqu’un acheteur saisit un code postal à cinq chiffres pour une adresse coréenne.
  • zip_codes.xml a été mis à jour pour appliquer les codes postaux brésiliens à huit chiffres. GitHub-29984
  • Amélioration de la localisation des phrases non localisées restantes. GitHub-11175
  • L’espace réservé d’entrée de recherche dans la grille peut maintenant être traduit. GitHub-30510
  • L’application télécharge désormais les modules JavaScript de traduction en ligne uniquement lorsqu’ils sont activés. GitHub-29553

Interface utilisateur

  • Le bouton Créer un compte de la page Créer un compte reste actif lorsqu’un acheteur saisit des données non valides. Auparavant, ce bouton était désactivé, ce qui empêchait les acheteurs de tenter à nouveau de créer un compte après avoir effectué une erreur. Il s’agissait d’un problème connu dans la version 2.4.1. GitHub-30513
  • Le chargement de la grille d'expédition sur la page Modifier la commande d'administration a été amélioré.
  • L’application affiche désormais la case Identique à l’adresse de facturation comme prévu sur la page de commande lorsque des produits ont été ajoutés au panier par SKU.
  • La classe CSS qui a défini une largeur limitée est désormais appliquée comme prévu aux champs Heure de début dans Admin Store > Configuration > Catalogue > Plan de site XML > Paramètres de génération. GitHub-29496
  • Correction des problèmes d’affichage liés au libellé de la case à cocher Termes et conditions. GitHub-24060
  • L’application n’affiche plus le code CSS d’un bloc de prix de niveau sur la page de produits lorsque les prix de niveau ne sont pas disponibles. GitHub-29194
  • La position des boutons sur la page d’affichage des détails de l’image a été réorganisée conformément aux directives de l’interface utilisateur. GitHub-1783
  • Le champ de texte du code promotionnel s’affiche désormais dans la largeur appropriée dans les navigateurs Internet Explorer/EDGE.
  • La variable @button__border-radius est maintenant définie dans la bibliothèque lib/web/css/source/lib/variables/_buttons.less. border-radius a une valeur par défaut de 3px. Auparavant, border-radius était codé en dur. GitHub-28674
  • Le bouton d’envoi de la recherche (loupe) dans le champ de recherche miniature est désormais désactivé jusqu’à ce que la longueur minimale de chaîne de recherche soit atteinte. GitHub-29704
  • Le bouton Prévisualiser le modèle fonctionne désormais comme prévu dans la page Modifier la file d’attente.
  • L’application conserve désormais la valeur d’un attribut lorsque vous déplacez celui-ci d’un groupe à un autre.
  • Ajout d’une variable d’épaisseur de police élevée à lib/web/css/source/lib/variables/_typography.less. GitHub-29778
  • La visibilité des filtres fonctionne désormais avec la visibilité des colonnes telle qu’attendue dans les grilles d’administration. GitHub-30345
  • Les options de sélection de composant de l’interface utilisateur ne sont plus visibles lorsque la this.disabled(true) est définie. GitHub-29098
  • La variable @font-family-name__base n’est plus utilisée lors du chargement de la police Open Sans. GitHub-29515
  • L’attribut WAI-ARIA aria-atomic="true" a été ajouté à la balise conteneur d’erreurs. GitHub-29560
  • Les grilles des composants de l’interface utilisateur affichent désormais un nombre précis d’éléments sélectionnés. Auparavant, les grilles indiquaient un nombre erroné de sélections lorsqu’une recherche par mot-clé sélectionnait tous les éléments de la grille et que l’acheteur désélectionnait ensuite certains éléments avant de cocher la case d’en-tête. GitHub-29968
  • L’application n’affiche plus les HTML non rendues sur les pages d’aperçu de facture et d’expédition. GitHub-29958
  • Cliquez sur Options dans Admin Magasins > Taux de change pour diriger les utilisateurs vers la section des options de devise développée de la page Configuration du système. GitHub-29336
  • Amélioration de la prise en charge de l’affichage d’un widget en fonction d’une autre condition pour les widgets adminhtml lors de l’utilisation d’un type de widget de sélecteur. GitHub-13316, GitHub-7252, GitHub-6868
  • Amélioration de la marge intérieure du texte dans les boîtes de dialogue pop-up de confirmation dans le thème Luma. GitHub-30452

Coffre

  • Le module Vault reconnaît désormais les codes de mode de paiement de la demande de service de gestion des informations de paiement. Auparavant, lorsqu’un acheteur passait une commande à l’aide d’une carte de crédit Braintree enregistrée, l’application générait cette erreur même lorsqu’un mode de paiement valide était utilisé : The requested Payment Method is not available.
  • La bannière que l’application affiche sur la page Connexion en tant qu’administrateur en tant que client reste désormais en haut de la page lorsque l’utilisateur la fait défiler. GitHub-29354

Vertex

  • Les suggestions d’adresses sont désormais supprimées comme prévu lorsqu’une adresse est modifiée.

  • Une condition de concurrence qui empêchait certains clients d’enregistrer leur adresse dans le panneau de leur compte a été résolue.

  • La validation des adresses de sommet n’ajoute plus la page Modification d’adresse au cache de pages complètes, sous certaines conditions.

  • La taxe calculée par sommet est désormais prise en compte lorsque la livraison gratuite est configurée pour un montant incluant la taxe.

Framework d’API web

  • Vous pouvez désormais utiliser l’V1/invoice/:invoiceId/refund POST pour rembourser une facture qui ne comporte aucune quantité de produits ni aucun frais d’expédition (par exemple, {"items": [{"qty": 0, "orderItemId": 6, "extensionAttributes": {}}], "appendComment": false, "notify": true, "isOnline": true, "arguments": {"adjustment_negative": 0.0, "adjustment_positive": 0.99, "shipping_amount": 0}}. ). Auparavant, l’application générait cette erreur : You can't create a creditmemo without products. GitHub-23069
  • Vous pouvez désormais utiliser des V1/categories POST pour créer ou mettre à jour une catégorie. Auparavant, l’application n’enregistrait pas la valeur si la valeur default_sort_by était définie sous la forme d’un tableau. Lorsque la valeur default_sort_by a été définie sous la forme d’une chaîne, l’application a généré l’erreur suivante : Error occurred during \"custom_attributes\" processing. Attribute \"default_sort_by\" has invalid value. The \"string\" value's type is invalid. The \"string[]\" type was expected. Verify and try again.
  • L’utilisation des V1/invoices/:id/capture POST pour capturer les informations de paiement fonctionne désormais comme prévu. Auparavant, l’application autorisait la commande, mais ne la capturait que sur le site de la passerelle de paiement.
  • Lorsque vous utilisez des V1/order/:orderId/ship POST pour créer une expédition partielle, le point d'entrée renvoie le nombre correct de produits expédiés.
  • Les factures créées à l'aide de l'V1/order/:orderID/invoice POST reflètent désormais précisément le paiement partiel par crédit de magasin. Auparavant, lorsqu’une commande était partiellement payée avec un crédit de magasin, la facture était créée sans prendre en compte le crédit de magasin.
  • Les appels de rest/all/V1/categories GET rest/all/V1/categories?rootCategoryId=2 et GET renvoient désormais les champs name et product_count renseignés comme prévu pour toutes les catégories de l’arborescence. Auparavant, les valeurs des champs de catégorie étaient vides. Le plug-in de résolution de nom de table a renvoyé un nom de table incorrect pour récupérer le nombre de produits par catégorie.
  • Le point d’entrée de V1/categories/:id PUT stocke désormais les données nécessaires à la création de redirections 301 pour les clés d’URL de catégorie lorsque l’attribut personnalisé save_rewrites_history est fourni. GitHub-29174, GitHub-30240

Liste de souhaits

  • Les acheteurs peuvent désormais ajouter un produit à une liste de souhaits lorsque le produit est affecté à une source d’inventaire personnalisée. GitHub-3018
  • Les administrateurs peuvent désormais accéder à la page Gérer le panier à partir de la page Admin - Client une fois qu’un client a ajouté un produit à sa liste de souhaits à partir du storefront. Auparavant, l’application affichait l’erreur suivante lorsque l’administrateur cliquait sur le bouton Gérer le panier : An error has occurred. See error log for details.
  • Le bouton Ajouter au panier de la page de liste de souhaits partagée fonctionne désormais comme prévu pour les utilisateurs anonymes, invités et non connectés.
  • L’application affiche désormais les options d’attribut de produit configurables sélectionnées dans la page de liste de souhaits comme prévu. GitHub-24091, GitHub-22503
  • Implémentation de ActionInterface pour \Magento\Wishlist\Controller\Shared\Allcart. GitHub-29537

Problèmes connus

Problème : le fichier [magento_root]/index.php a été supprimé et l’application s’exécute désormais à partir d’/pub par défaut pour les configurations Apache. Les magasins diffusés à partir de sous-dossiers ne fonctionneront pas comme prévu et peuvent afficher des erreurs 404. Solution : utilisez des liens symboliques pour émuler l’installation dans un sous-dossier. L’exemple suivant utilise https://shop01.com/shop/ pour illustrer comment utiliser un lien symbolique pour émuler une installation dans un sous-dossier.

  1. Créez un sous-répertoire pour https://shop01.com/shop/ :

    code language-bash
    mkdir magento_root/pub/shop01
    
    code language-bash
    cd magento_root/pub/shop01
    
  2. Créez des liens symboliques pour les répertoires parents du magasin dans le répertoire nouvellement créé :

    code language-bash
    ln -s ../media media
    
    code language-bash
    ln -s ../static static
    
    code language-bash
    ln -s ../../../pub pub
    
    code language-bash
    ln -s ../.htaccess .htaccess
    
    code language-bash
    ln -s ../health_check.php health_check.php
    
  3. Créez un fichier index.php dans le nouveau répertoire (magento_root/pub/shop01/index.php) et ajoutez le contenu suivant :

   <?php
   require realpath(__DIR__) . '/../../../app/bootstrap.php';

   switch ($_SERVER['HTTP_HOST']) {
       case 'shop01.com':
       case 'www.shop01.com':
           $params = $_SERVER;
           $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'shop01';
           $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
           $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
           $app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
           $bootstrap->run($app);
           break;

       default:
           $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
           /** @var \Magento\Framework\App\Http $app */
           $app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
           $bootstrap->run($app);
       break;
   }
  1. Configurez votre serveur Apache pour qu’il pointe vers le nouveau sous-répertoire . Les configurations de déploiement peuvent varier considérablement. Voici un exemple de configuration de serveur :
   <VirtualHost *:80>
       DocumentRoot "magento_root/pub/shop1"
       ServerName shop01.com
   </VirtualHost>

Problème : l’application n’envoie pas les informations de paiement comme prévu lorsqu’un acheteur saisit un code correct pour la première fois dans le champ CAPTCHA de la page Paiement, mais affiche cette erreur : There has been an error processing your request. Cela se produit uniquement lorsque l’acheteur tente de passer la commande sans saisir le code CAPTCHA ou en le saisissant incorrectement. Solution : actualisez la page.

Problème : l’application crée une commande dans Braintree comme prévu lorsqu’un acheteur clique sur Payer avec Venmo, mais ne crée pas la commande dans l’administration. Voir l’article de la base de connaissances 2.4.2 problème connu : le paiement Braintree Venmo ne fonctionne pas

Problème : vous ne pouvez pas utiliser la mutation addConfigurableProductToCart GraphQL pour ajouter un produit configurable à un panier dans une vue de magasin autre que la vue par défaut dans un déploiement multi-magasin qui exécute Inventory. (Les storefronts de Luma ne sont pas affectés.) L’application affiche cette erreur : Could not add item to cart. Please check required options and try again. Solution : utilisez plutôt la mutation addProductsToCart. GitHub-31660

Contributions de la Communauté

Nous sommes reconnaissants envers l’ensemble de la communauté Magento Open Source et souhaitons saluer leurs contributions à cette version.

L’équipe d’ingénierie de communauté Magento Contributors tient à jour une liste des principaux contributeurs individuels et partenaires par mois, trimestre et année. Depuis cette page Contributeurs, vous pouvez suivre les liens vers leurs relations publiques fusionnées sur GitHub.

Contributions des partenaires

Le tableau suivant présente les contributions des partenaires. Ce tableau répertorie le partenaire qui a contribué à la demande d’extraction, la demande d’extraction externe et le numéro de problème GitHub qui lui est associé (le cas échéant).

Partenaire
Demandes d’extraction
Problèmes GitHub associés
Atwix
magento/magento2#29630, magento/magento2#29459, magento/magento2#29703, magento/magento2#29460, magento/magento2#29042, magento/magento2#29482, magento/magento2#28821, magento/partners-magento2ee#260, magento/magento2#29148, magento/magento2#29634 magento/magento2#29832, magento/magento2#29830, magento/magento2#29829, magento/magento2#29828, magento/magento2#29821, magento/magento2#29820, magento/magento2#29836, magento/magento2#29831, magento/magento2#29822 magento/magento2#28653, magento/partners-magento2ee#26427391, magento/partners-magento2ee#24829833, magento/partners-magento2ee#16829904, magento/magento2#, magento/partners-magento2ee#329, magento/magento2#, magento/partners-magento2ee#31629929, magento/magento2#29962, magento/magento2#, magento/magento2#29931, magento/magento2#, magento/partners-magento2ee#27929835, magento/magento2#29834, magento/magento2#30081, magento/partners-magento2ee#27930030 magento/partners-magento2ee#34929827, magento/magento2#30049, magento/partners-magento2ee#34630217, magento/magento2#27939, magento/magento2#, magento/magento2#30222, magento/magento2#, magento/magento2#29868 magento/magento2#, magento/magento2#30079, magento/magento2#30317, magento/magento2#30633, magento/magento2#30619, magento/magento2#30359, magento/magento2#30223, magento/partners-magento2ee#40030630, magento/partners-magento2ee#40129675 30777 30528 30525 30779 30529 30694 🔗 🔗
magento/magento2#29649, magento/magento2#29712, magento/magento2#29501, magento/magento2#29145, magento/magento2#29500, magento/magento2#28520, magento/magento2#28558, magento/magento2#29648, magento/magento2#29843, magento/magento2#29845 magento/magento2#29846, magento/magento2#29847, magento/magento2#29824, magento/magento2#29823, magento/magento2#29841, magento/magento2#29844, magento/magento2#29825, magento/magento2#29531, magento/partners-magento2ee#29601, 29839magento/magento2#, 28551magento/magento2#, 29940magento/magento2#, 29982magento/magento2#, 29941magento/magento2#, 29842magento/magento2#, 29838magento/magento2#, 30103magento/magento2#, 30032magento/magento2# 29848magento/magento2#, 30058magento/magento2#, 30031magento/magento2#, 30061magento/magento2#, 30561magento/magento2#, 30469magento/magento2#, 30468magento/magento2#, 30372magento/magento2# 30683magento/partners-magento2ee#, 30624magento/partners-magento2ee#410 29168 30783 30916 30917 30782 30926 30625 30474 🔗
Acorn iCi bleu
magento/magento2#29670, magento/magento2#29669, magento/magento2#29564, magento/magento2#27494, magento/magento2#29269, magento/magento2#27609, magento/magento2#29688, magento/magento2#29081, magento/magento2#28379, magento/magento2#29722 magento/magento2#27077, magento/magento2#30318 30010
magento/magento2#29672, magento/magento2#29673, magento/magento2#29679, magento/magento2#29537, magento/magento2#25595, magento/magento2#29689, magento/magento2#28154, magento/magento2#28428, magento/magento2#27397, magento/magento2#29729 magento/magento2#29558, magento/magento2#25110, magento/magento2#25886, magento/magento2#28286 30009
Comwrap
magento/magento2#29814, magento/magento2#29751, magento/partners-magento2ee#337, magento/partners-magento2ee#328, magento/partners-magento2ee#319, magento/magento2#30118, magento/magento2#30019, magento/magento2#29998 29883
magento/magento2#29718, magento/magento2#29372, magento/magento2#29927, magento/magento2#29930, magento/magento2#29926, magento/magento2#29880
Chat Blanc Rapide
magento/magento2#29413, magento/magento2#28163, magento/magento2#30320, magento/magento2#30355, magento/magento2#28157, magento/magento2#30114
magento/magento2#24060, magento/magento2#13401, magento/magento2#11175, magento/magento2#30296, magento/magento2#22503, magento/magento2#24091, magento/magento2#30073
Vaimo
magento/magento2#29339, magento/magento2#28676, magento/magento2#29885
magento/magento2#28633, magento/magento2#29890
Cedcommerce
magento/magento2#27602, magento/magento2#30400, magento/magento2#30391
magento/magento2#27350, magento/magento2#30361, magento/magento2#30362, magento/magento2#30255
COMMERCE MRM
magento/magento2#30120, magento/partners-magento2ee#175
magento/magento2#30133, magento/partners-magento2ee#26943
EY
magento/magento2#30130
Épingler
magento/magento2#28687, magento/magento2#28663, magento/magento2#28491
magento/magento2#8538, magento/magento2#28479, magento/magento2#28186
style créatif
magento/magento2#27696, magento/magento2#25405
magento/magento2#29553, magento/magento2#25399
Oeil De Poisson
magento/magento2#27940, magento/partners-magento2ee#267, magento/magento2#28216
magento/magento2#29555, magento/magento2#13440
SNOW.DOG
magento/magento2#29934
magento/magento2#29933
integer_net GmbH
magento/magento2#28164
magento/magento2#29585
Ziffity
magento/magento2#29353, magento/magento2#27896, magento/magento2#28349
magento/magento2#29194, magento/magento2#29098
Journée du Bluebird
magento/magento2#27832
magento/magento2#11998, magento/magento2#27500
TechnoLabs irlandais
magento/magento2#29923
magento/magento2#29920
Groupe né
magento/magento2#30109, magento/magento2#30421
magento/magento2#30125
Solutions d’orientation
magento/magento2#28818
magento/magento2#29546
Le Site
magento/magento2#25412
magento/magento2#25411
Kensium Solutions LLC
magento/magento2#30230
magento/magento2#30179
Saut Web
magento/magento2#27869
magento/magento2#27866
Conseils sur Aligent
magento/magento2#29692
magento/magento2#30243
Wagento
magento/magento2#30411
magento/magento2#30408
MediaCT
magento/magento2#29210
magento/magento2#29515
eComero
magento/magento2#28917
magento/magento2#29656

Contributions des contributeurs individuels

Le tableau suivant identifie les contributions des membres de notre communauté. Ce tableau répertorie les demandes d’extraction externes, le numéro de problème GitHub qui lui est associé (le cas échéant) et le membre de la communauté qui a contribué à la demande d’extraction.

Membre contributeur de la communauté
Demandes d’extraction
Problèmes GitHub associés
Nazar Klovanych
#29576
1449
Shankar Konar
#29511
29496
Hazel Joie Caquicla
#29494
Hazel Joie Caquicla
#29491
Kos Rafał
#29483
29525
Hazel Joie Caquicla
#29461
Jekabs
#29458
29498
Nazar Klovanych
#29452
jmonteros422
#29435
1711
Shankar Konar
#29433
1738
Nazar Klovanych
#29429
1755, 1694
Bartłomiej Szubert
#29413
24060
Angelo Romano
#29410
29416
Honeymay Louiese Ignacio
#29400
1703
Franciszek Wawrzak
#27478
29606
Lukasz Bajsarowicz
#29670
29672
Lukasz Bajsarowicz
#29669
29673
Nazar Klovanych
#29636
1764
Oleh Usik
#29630
29649
Lukasz Bajsarowicz
#29564
29679
Ihor Sviziev
#29518
29653
Oleh Usik
#29459
Oleksandr Kravchuk
#29339
Will Wright
#29316
29315
Vadim Malesh
#29693
29700
Vadim Malesh
#29682
Andrii Beziazychnyi
#29703
29712
Shankar Konar
#29510
28422
Vadim Malesh
#29474
29267
Oleh Usik
#29460
29501
Dmitry Tsymbal
#29042
29145
Savvas Radevic
#28816
28802
Sascha
#28548
28674
Yan Nasonov
#28512
29661
Rudolf Vince
#27494
29537
Nazar Klovanych
#29684
1769
Nazar Klovanych
#29633
1763
Hazel Joie Caquicla
#29639
jmonteros422
#29632
1760
Oleh Usik
#29482
29500
Sathish Subramanian
#29353
29194
Russell Albin
#29269
25595
Bartłomiej Szubert
#28163
13401
Mateusz Krzeszowiak
#27696
29553
Vitaliy Prokopov
#27691
26903
korostii
#26081
26080
Nazar Klovanych
#29711
1774
Hazel Joie Caquicla
#29411
Wout Kramer
#29210
29515
Eduard Chitoraga
#29148
Oleh Usik
#28821
28558, 28520
Nazar Klovanych
#29783
1780
jmonteros422
#29774
1783
Hazel Joie Caquicla
#29772
Sergii Ivashchenko
#29761
jmonteros422
#29753
1784
Nazar Klovanych
#29743
1782
Nazar Klovanych
#29742
1778
Hazel Joie Caquicla
#29705
jmonteros422
#29677
1504
Ihor Sviziev
#29799
Oleh Usik
#29634
29648
Alexandr Skrashuk
#29348
28921
Vitaliy Prokopov
#28413
28388
Lukasz Bajsarowicz
#27609
korostii
#27579
27523
Cristian Partia
#29426
29425
Michał Derlatka
#28915
26425
Oleh Usik
#29832
29843
Oleh Usik
#29830
29845
Oleh Usik
#29829
29846
Oleh Usik
#29828
29847
Oleh Usik
#29821
29824
Oleh Usik
#29820
29823
Denys Babenko
#28343
29067
Bal
#27269
26288
Andrii Kasian
#27129
25199
Hazel Joie Caquicla
#29875
Hazel Joie Caquicla
#29869
Oleh Usik
#29836
29841
Oleh Usik
#29831
29844
Oleh Usik
#29822
29825
Tu Nguyen
#29044
29526
Vinoth
#28349
bradleybrecher
#27386
29560
Sergii Ivashchenko
#29921
Hazel Joie Caquicla
#29896
Shankar Konar
#29724
29704
Oleh Usik
#28653
29531
Tu Nguyen
#29913
29914
Nazar Klovanych
#29861
1789
Tu Nguyen
#29856
29857
Tu Nguyen
#29771
29779
Eden Duong
#29278
29277
Eden Duong
#29276
29336
Mohamed-Asar
#27896
29098
Honeymay Louiese Ignacio
#29947
toxique
#29925
28981, 29879
Viktor Kopin
#29906
Olga Zakharchuk
#29863
29958
Nikolaj Malevanec
#29006
12087
Abdul Rahman Abouzaid
#28687
8538 🔗
KrielkipNL
#27832
11998, 27500
Gaurav Agarwal
#27602
27350
Alexander Taranovsky
#27391
29601
Stanislav Ilnytskyi
#26877
26876
Sergii Ivashchenko
#29889
Nazar Klovanych
#29715
1487
Honeymay Louiese Ignacio
#29543
1724
Oleh Usik
#29833
29839
Porraphit Chuasuk
#28896
28892
Vitaliy Prokopov
#27857
26976
Eduard Chitoraga
#29904
Hazel Joie Caquicla
#30006
Ihor Sviziev
#29993
30004
Viktor Kopin
#29959
1813
Hazel Joie Caquicla
#29909
Lukasz Bajsarowicz
#29688
29689
Shankar Konar
#29415
29354
Hazel Joie Caquicla
#29967
Oleh Usik
#29929
29940
Hazel Joie Caquicla
#29895
ashokadewit
#27446
29603
Pascal Brouwers
#26527
26526
Sergii Ivashchenko
#30076
Hazel Joie Caquicla
#30044
Viktor Kopin
#29979
1806
Janusz Janczy
#29934
29933
Marvin Hinz
#29542
29185
Pieter Zandbergen
#29274
29524
Joe Hobbs
#25510
25147
Benoît Xylo
#25405
25399
Viktor Kopin
#30074
Hazel Joie Caquicla
#30042
Oleh Usik
#29962
29982
Oleh Usik
#29931
29941
Oleh Usik
#29835
29842
Oleh Usik
#29834
29838
Evgeny Levinsky
#27698
28324
Vadim Malesh
#26470
7720 🔗
Oleh Usik
#30081
30103
Leandro F. L.
#30014
30013
Taras Gamanov
#29968
24348, 24400
Shankar Konar
#29671
16531, 24332, 29852
Ejaz Alam
#29486
29487, 29502
Oleh Usik
#30030
30032
Eugene Shakhsuvarov
#28117
28116
Serhii Dzhepa
#30095
Hazel Joie Caquicla
#30057
Hazel Joie Caquicla
#30034
Marcos Trama
#29972
29984
Lyzun Oleksandr
#29814
29718
Tu Nguyen
#29794
29075
Greg Harvell
#29081
28154, 28428
Daniel Beitler
#29080
29659
Svyatoslav
#28818
29546
Fabian Schmengler
#28164
29585
Tymoteusz Motylewski
#27980
29590
Alex Gusev
#30077
26762, 29612
Abdul Rahman Abouzaid
#28663
28479
Abdul Rahman Abouzaid
#28491
28186
jiten-patel
#27953
12225
Ihor Sviziev
#30153
30183
Shankar Konar
#30069
30164
Leandro F. L.
#30011
29377
Oleh Usik
#29827
29848
Davide Riccardo Caliendo
#29015
29017
Zach Nanninga
#28379
27397
Bünyamin
#27869
27866
Eden Duong
#27585
29599
David Haecker
#30096
322 🔗
Yaroslav Garmash
#30075
312 🔗
John Carlo Octabio
#30028
Frédéric MARTINEZ
#30182
30191
Ihor Sviziev
#30170
30146
Rafael Kassner
#30160
Sean van Zuidam
#30139
30186
Bartosz Górski
#30120
30133
Milind Singh
#30109
30125
Kate Kyzyma
#30049
30058
Damián Culotta
#29722
29729
Anton Evers
#28995
29522
Kate Kyzyma
#30217
Nikita Sarychev
#30172
30173
Tu Nguyen
#30108
Alexander Menk
#29205
29174, 30240
Barny Shergold
#28676
28633
Jonas Hünig
#28516
29662
Tu Nguyen
#28177
30237
Alexander Taranovsky
#27939
30031
David Manners
#27581
29598
Navar Barnier
#27077
29558
kolaente
#30180
30190
Peep van Puijenbroek
#29466
29652
Frédéric MARTINEZ
#28588
Petkovski Marjan
#29751
29372
Oleh Usik
#30222
Timon de Groot
#28809
22375
Nirav Patel
#28385
30345
Dan Wallis
#27940
29555
Sean van Zuidam
#30065
30064
Tu Nguyen
#30008
30036
Tu Nguyen
#29726
29719
Gabriel Somoza
#28389
29165
Dan Wallis
#28216
13440
Rafael Corrêa Gomes
#25412
25411
Siim
#29885
29890
Bartosz Kubicki
#27092
29557
Sudheer Singamsetti
#30230
30179
Namrata
#30358
30450
Tu Nguyen
#30333
30448
Wojtek Naruniec
#30318
25110, 25886, 28286
Sean van Zuidam
#30062
30063, 30066
Tu Nguyen
#29773
29778
Pieter Cappelle
#26713
14398, 21885
Bartłomiej Szubert
#30320
11175
Bas van Poppel
#30167
30169
Ihor Sviziev
#30023
30025
Ihor Sviziev
#30002
30005
Eden Duong
#27574
29597
Rafael Kassner
#27454
29604
Nirav Patel
#30458
30452
Tu Nguyen
#30454
30496
solwininfotech
#30405
26133
Bartłomiej Szubert
#30355
30296
Serhii Dzhepa
#30554
Alin Alexandru
#30340
30508
Oleh Usik
#29868
30061
guillaume quintard
#28928
29988
Par
#28172
27925
Bartłomiej Szubert
#28157
22503, 24091
Nikolay Sumrak
#27672
29552
Jonas Hünig
#30502
30566
Yaroslav Bogutsky
#30493
30510
Tu Nguyen
#30453
30542
Sunil Patel
#30402
30388
Oleh Usik
#30079
Jeroen
#29911
29915
Pieter Hoste
#29196
29297, 29478
Johan Lindahl
#28917
29656
Bartosz Kubicki
#26967
29615
Ejaz Alam
#30579
30545
Pieter Hoste
#30570
6868, 7252, 13316
Namrata
#30538
30550
Pratik Oza
#30530
30552
Andrii Kasian
#30521
30563
naitsirch
#30322
30314
Kate Kyzyma
#30317
30561
Stanislav Ilnytskyi
#30198
30601
Cyildirim
#28352
28124
Andrii Beziazychnyi
#30633
30469
Eduard Chitoraga
#30619
30468
Sudheer Singamsetti
#30375
30349
Sagar Dahiwala
#30368
325 🔗
Nikolaj Malevanec
#30763
30747
Dmitry Tsymbal
#30359
30372
Oleh Usik
#30223
30683
Lukasz Bajsarowicz
#28147
28309
Matei Purcaru
#27972
27954
Vova Yatsyuk
#27674
29551
Bartosz Kubicki
#26966
30216
Simon Sprankel
#26401
29621
Gabriel da Gama
#30895
30896
Samuel Caçador
#30793
30833
Vova Yatsyuk
#30774
30781 197
Diego Sanabria
#30681
30680
Evgen Mozok
#30632
24730
Sanjay Patel
#30411
30408
Shikha Mishra
#30400
30361, 30362
Shikha Mishra
#30391
30255
Bartłomiej Szubert
#30114
30073
Michael Bottens
#30010
30009
Tu Nguyen
#29986
29987
Saphal Jha
#29923
29920
Andrii Kasian
#27379
29600
Yaroslav Rogoza
#30630
30624
Oleh Usik
#29675
29168
Andrii Kalinich
#30749
23069
Viktor Kopin
#30727
30645
Thomas Klein
#30825
30859
Oleh Usik
#30777
30783
Oleh Usik
#30528
30916
Oleh Usik
#30525
30917
Ihor Svizievv
#30090
30184
Andrii Kalinich
#30866
24717
Viktor Kopin
#30928
30685
Nitish Singh
#30421
Oleh Usik
#30779
30782
Nazar Klovanych
#30662
30649
Oleh Usik
#30529
30926
Marush Denchev
#30614
30104
Lachlan
#29692
30243
Viktor Kopin
#30947
29128
Andrii Kalinich
#30807
26432
Viktor Kopin
#30961
13746
Nikolaj Malevanec
#30963
30295
Andrii Beziazychnyi
#30694
30625
Alexander Turiak
#30636
30467

Configuration requise

Notre pile technologique est construite sur PHP et MySQL. Pour plus d'informations, voir Configuration requise.

Instructions d’installation et de mise à niveau

Vous pouvez installer Magento Open Source 2.4.2 à l’aide du compositeur.

Kits d’outils de migration

L’outil de migration de données permet de transférer les données de stockage Magento 1.x vers Magento 2.x. Cette interface de ligne de commande comprend des fonctions de vérification, de suivi de la progression, de journalisation et de test. Pour obtenir des instructions d’installation, voir Installation de l’outil de migration des données. Envisagez d’explorer le référentiel de migration de données ou d’y contribuer.

Le kit de migration du code permet de transférer les extensions et personnalisations de magasin Magento 1.x existantes vers Magento 2.x. L’interface de ligne de commande comprend des scripts permettant de convertir des modules et des mises en page Magento 1.x.

recommendation-more-help
1d4eef6c-fef1-4e61-85eb-b58d7b9ac29f