Tous les tutoriels ne couvrent que l’ajout de champs, mais la sauvegarde de la valeur de ce fichier est ignorée. Je ne sais pas pourquoi, c'est la partie la plus importante de l'ajout de tout champ ou formulaire.
J'ai essayé de suivre la documentation de Magento , mais ... ça craint.
À des fins de test, j'essaie d'ajouter d'autres champs à l'adresse d'expédition, simplement pour ignorer les étendues personnalisées, les ensembles de données personnalisés, les fournisseurs de données personnalisés et d'autres éléments non documentés, ce qui me semble trop étrange.
Je n'ai aucune idée de ce que signifie cette forme "statique" ou "dynamique". Pour moi, tous les formulaires de paiement sont construits de manière dynamique sur les modèles KnockoutJS, mais ... lorsque j'essaie de manière "statique", je peux ajouter des entrées ici (donc c'est un formulaire statique ou pas?).
J'essaie d'abord de déboguer pourquoi les observables Knockout ignorent simplement mes champs lors de l'analyse et de l'envoi de données. J'ai trouvé que mes champs ont un name
paramètre vide , mais je ne parviens pas à résoudre ce problème. IMO il devrait être passé au moteur de rendu d'interface utilisateur via un inputName
paramètre, comme toutes les autres options telles que disabled
, placeholder
etc.
Deuxièmement, j'ai essayé d'utiliser la méthode "dynamique" pour créer un plugin avec LayoutProcessor
et transmettre exactement les mêmes données ... et maintenant, j'ai des champs avec name
s, mais l'envoi ne fonctionne toujours pas du tout.
Après avoir fouillé dans JS, j’ai trouvé que la préparation de cette demande était conservée dans un module-checkout/view/frontend/web/js/model/shipping-save-processor/default.js
fichier, qui dépend du lieu module-checkout/view/frontend/web/js/model/quote.js
où les observables Knockout sont définis / créés.
D'une manière ou d'une autre, module-checkout/view/frontend/web/js/model/address-converter.js
mettez à jour ces observables et dépend module-checkout/view/frontend/web/js/model/new-customer-address.js
où j'ai finalement trouvé quelques options de configuration intéressantes - liste de tous les champs d'adresse.
Lorsque j'ajoute mes champs ici, les scripts commencent à être analysés et envoyés, OFC j'en reçois 500, le backend b / c ne les reconnaît pas ... (ne demandez pas, je ne suis pas un développeur backend)
Alors voici mes questions:
- C'est une bonne façon de gérer ce type de personnalisation? (b / c semble bizarre pour moi)
- Comment envoyer des valeurs de champs non liées à de nouvelles adresses? Je n'ai vu aucune configuration similaire nulle part. Dans mon cas, j'aimerais envoyer un commentaire de commande (textarea) et une demande de facture (case à cocher). Les deux ne doivent pas être enregistrés en tant qu’adresse, car certains utilisateurs souhaiteront peut-être enregistrer cette adresse pour une utilisation ultérieure.
- Existe-t-il une documentation sur les formulaires "statiques" et "dynamiques" ou quelques exemples / comparaisons? Ça vaut la peine d'y penser de cette façon?
Question existentielle supplémentaire:
- Pourquoi est-ce si incohérent? Pourquoi dois-je définir des tonnes de paramètres dans des fichiers XML / PHP, alors que Magento ne peut tout simplement que restituer une entrée et que je dois tout gérer moi-même?