Todos los tutoriales solo cubren la adición de campos, pero el valor de guardado de estos archivos se omite #mindblown. No sé por qué, es la parte más importante de agregar cualquier campo o formulario.
Traté de seguir los documentos de Magento , pero ... apesta.
Para fines de prueba, trato de agregar otros campos a la dirección de envío, solo para ignorar los ámbitos personalizados, los conjuntos de datos personalizados, los proveedores de datos personalizados y otras cosas indocumentadas, lo que me parece demasiado extraño.
No tengo idea de qué significa que esa forma es "estática" o "dinámica". Para mí, todos los formularios de pago se construyen dinámicamente sobre las plantillas de KnockoutJS, pero ... cuando trato de forma "estática", puedo agregar entradas aquí (¿es una forma estática o no?).
Primero trato de depurar por qué los observables Knockout simplemente ignoran mis campos durante el análisis y envío de datos. Descubrí que mis campos tienen un name
parámetro vacío , pero no puedo manejar una forma de solucionar este problema. En mi opinión, se debe pasar al procesador de componentes de la interfaz de usuario a través del inputName
parámetro, al igual que cualquier otra opción como disabled
, placeholder
etc. (otros parámetros funcionan bien, verifiqué la configuración generada desde mi XML para inicializar el módulo de pago y se ve bien para mí)
En segundo lugar, intenté usar la forma "dinámica" con la creación de complementos LayoutProcessor
y pasar exactamente los mismos datos ... y ahora tengo campos con name
s, pero el envío aún no funciona en absoluto.
Después de profundizar en JS, descubrí que la preparación de esta solicitud se mantiene en el module-checkout/view/frontend/web/js/model/shipping-save-processor/default.js
archivo, que depende de module-checkout/view/frontend/web/js/model/quote.js
dónde se definan / creen los observables Knockout.
Actualice de alguna manera module-checkout/view/frontend/web/js/model/address-converter.js
estos observables y depende de module-checkout/view/frontend/web/js/model/new-customer-address.js
dónde finalmente encontré algunas opciones de configuración interesantes: lista de todos los campos de dirección.
Cuando agrego mis campos aquí, los scripts comienzan a analizarlos y enviarlos, OFC obtengo 500, b / c backend no los reconoce ... (no pregunte, no soy un desarrollador de backend)
Entonces aquí vienen mis preguntas:
- ¿Es una forma correcta de manejar este tipo de personalización? (B / C se ve raro para mí)
- ¿Cómo enviar valores de campos no relacionados con nuevas direcciones? No vi una configuración similar en ningún lado. En mi caso, me gustaría enviar un comentario de pedido (área de texto) y una solicitud de factura (casilla de verificación). Ambos no deben guardarse como una dirección, porque algunos usuarios pueden querer guardar esta dirección para usarla en el futuro.
- ¿Existe alguna documentación sobre formas "estáticas" y "dinámicas" o algunos ejemplos / comparación? ¿Vale la pena pensarlo de esta manera?
Pregunta existencial adicional:
- ¿Por qué esto es tan inconsistente? ¿Por qué tengo que definir toneladas de parámetros en archivos XML / PHP, mientras que Magento solo puede generar una entrada y luego tengo que manejar todo por mi cuenta?