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 nameparametro vuoto , ma non riesco a gestire un modo per risolvere questo problema. IMO dovrebbe essere passato al renderer del componente UI tramite inputNameparametro, lo stesso di qualsiasi altra opzione come disabled, placeholderecc. (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 LayoutProcessore il passaggio esattamente degli stessi dati ... e ora ho campi con names, 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.jsarchivio, che dipende da module-checkout/view/frontend/web/js/model/quote.jsdove sono definiti / creati gli osservabili Knockout.
In qualche modo module-checkout/view/frontend/web/js/model/address-converter.jsaggiorno 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?