Tutti i tutorial riguardano solo l'aggiunta di un campo, ma il salvataggio del valore di questo file viene ignorato #mindblown. Non so perché, è la parte più importante dell'aggiunta di qualsiasi campo o modulo.
Ho provato a seguire i documenti di Magento , ma ... fa schifo.
A scopo di test, provo ad aggiungere altri campi all'indirizzo di spedizione, solo per ignorare gli ambiti personalizzati, i set di dati personalizzati, i fornitori di dati personalizzati e altre cose prive di documenti, il che mi sembra troppo strano.
Non ho idea di cosa significhi che la forma è "statica" o "dinamica". Per me tutti i moduli di checkout sono costruiti dinamicamente in cima ai modelli KnockoutJS, ma ... quando provo il modo "statico", sono in grado di aggiungere input qui (quindi è un modulo statico o no?).
Per prima cosa provo a eseguire il debug del motivo per cui gli osservabili Knockout ignorano i miei campi durante l'analisi e l'invio dei dati. Ho scoperto che i miei campi hanno un name
parametro vuoto , ma non riesco a gestire un modo per risolvere questo problema. IMO dovrebbe essere passato al renderer del componente UI tramite inputName
parametro, lo stesso di qualsiasi altra opzione come disabled
, placeholder
ecc. (Altri parametri funzionano bene, ho controllato la configurazione generata dal mio XML per inizializzare il modulo di checkout e mi sembra buono)
In secondo luogo ho provato a usare il modo "dinamico" con la creazione di plugin con LayoutProcessor
e il passaggio esattamente degli stessi dati ... e ora ho campi con name
s, ma l'invio non funziona affatto.
Dopo aver scavato in JS ho scoperto che la preparazione di questa richiesta è mantenuta in module-checkout/view/frontend/web/js/model/shipping-save-processor/default.js
archivio, che dipende da module-checkout/view/frontend/web/js/model/quote.js
dove sono definiti / creati gli osservabili Knockout.
In qualche modo module-checkout/view/frontend/web/js/model/address-converter.js
aggiorno questo osservabile e dipende da module-checkout/view/frontend/web/js/model/new-customer-address.js
, dove ho finalmente trovato alcune interessanti opzioni di configurazione - elenco di tutti i campi degli indirizzi.
Quando aggiungo i miei campi qui, gli script iniziano ad analizzare e a inviarli, OFC ottengo 500, il backend b / c non li riconosce ... (non chiedere, non sono uno sviluppatore di backend)
Quindi ecco le mie domande:
- È un modo giusto per gestire questo tipo di personalizzazione? (b / c sembra strano per me)
- Come inviare valori di campi non correlati a nuovi indirizzi? Non ho visto una configurazione simile da nessuna parte. Nel mio caso, desidero inviare il commento dell'ordine (textarea) e la richiesta di fattura (casella di controllo). Entrambi non dovrebbero essere salvati come indirizzo, b / c alcuni utenti potrebbero voler salvare questo indirizzo per uso futuro.
- Esiste una documentazione sui moduli "statici" e "dinamici" o alcuni esempi / confronti? Vale la pena pensarci in questo modo?
Domanda esistenziale aggiuntiva:
- Perché questo è così incoerente? Perché devo definire tonnellate di parametri nei file XML / PHP, mentre Magento può solo rendere un input e quindi devo gestire tutto da solo?