Magento 2 minicart, message de bienvenue, d'autres ne fonctionnent pas avec le cache de page désactivé après la connexion du client

16

Avec le cache Magento 2.0.4 , plus spécifiquement le cache de pages activé , tout fonctionne.

Si je le désactive, effacez les cookies et connectez-vous en tant que client, car les produits de minicart ne sont pas là.

Le message de bienvenue ne fonctionne pas vraiment bien. Je dois ajouter un produit au panier à partir d'une page de produit afin de voir le minicart. Que si je passe à la caisse, le pays n'est pas affiché dans le résumé de l'adresse (adresse de livraison déjà ajoutée dans mon compte).

Je l' ai fait le débogage et il semble que le problème pointe vers: module-customer/view/frontend/web/js/customer-data.js. Le cookie private_content_versionest installé module-page-cache/view/frontend/web/js/page-cache.jset utilisé dans customer-data.js. Voir customerData::reloadfonction.

Lorsque le cache de pages est désactivé, les données ne sont pas chargées à partir du serveur comme le dataProvider::getFromServer()fait la fonction .

Lorsque le cache de page est désactivé, le cookie private_content_versionn'est pas là (page-cache.js n'est pas exécuté bien sûr). Mais le cookie section_data_idsn'a que '*' et 'messages' => vide (faux ou nul).

Lorsque le cache de page est activé, il y a private_content_versionet section_data_idsa quelles clés avec des valeurs:

*:      null
cart:       123
compare-products:       123
customer:       123
directory-data:     123
last-ordered-items:     123
multiplewishlist:       123
review:     123
wishlist:       123

Une fois que je me suis connecté avec le cache de page activé, sur le tableau de bord du client, il y a 2 demandes ajax supplémentaires qui chargent les données:

http://test.localhost/customer/section/load/?sections=&update_section_id=false&_=123 http://test.localhost/customer/section/load/?sections=directory-data&update_section_id=false&_=123

Ceux-ci contiennent des objets json avec des données spécifiques au client et des données d'annuaire comme tous les pays et régions. Avec ces appels, lors du paiement, le résumé de l'adresse affiche le nom du pays. Voir: module-customer/view/frontend/web/js/sections-config.js et module-checkout/view/frontend/web/js/view/shipping-address/address-renderer/default.js, fonction getCountryName.

Est-ce un bug de Magento 2 ou quelque chose que j'ai foiré? Merci

obscur
la source
Avez-vous pu résoudre ce problème ou trouver la cause exacte de ce problème? J'ai un problème très similaire, Magento ver. 2.0.1. Si je vide le cache (en supprimant tous les dossiers de cache), j'obtiens un message d'erreur similaire dans la console du navigateur:GET http://example.com/customer/section/load/?sections=&update_section_id=false&_=1462374643065 500 (Internal Server Error)
maginfortis
1
Je n'ai pas encore trouvé de solution. Dans votre cas, cela peut être un cas plus simple. Voyez quelle est l'erreur et essayez de la corriger. Activez les erreurs dans Magento 2 et contournez cette erreur spécifique. Je ne reçois pas d'erreurs, c'est juste que cela ne charge pas les données. Je n'ai pas vu d'erreurs dans mon cas.
obscur
J'ai rencontré la même erreur et je dirai que c'est un bug magento2 car avec FPC activé, cela fonctionnera mais une fois que vous le désactiverez, ce ne sera pas le cas. Pour le corriger temporairement, vous devez actualiser le minicart par programme sur chaque page.
Salma Saiyad

Réponses:

0

Cela semble être un problème en suspens, bien qu'il soit peut-être résolu dans les nouvelles versions de M2. Voir les problèmes de Magento GitHub:

Autant que ce que vous pouvez essayer ...

S'il s'agit d'un cookie, vous pouvez exclure certaines possibilités en visitant votre site dans un navigateur privé / navigation privée. Parcourez votre flux de travail (non connecté, ajoutez un produit au panier, connectez-vous au client, regardez / checkout / cart et liste déroulante minicart).

De plus, il peut être utile d'examiner les documents de développement M2 pour les meilleures pratiques concernant la configuration des caches en développement par rapport à la configuration en production . D'après mon expérience, en développement, il est OK d'avoir tous les caches activés en développement, et de simplement vider lorsque cela est nécessaire (lire les documents pour les descriptions de chaque cache). Remarque, en tant que développeur principalement frontal, je préfère personnellement développer avec FPC, la sortie des blocs et les caches de mise en page désactivés - cela permet de voir plus facilement les modifications frontales.

nshiff
la source