Todos os tutoriais estão cobrindo apenas a adição de campos, mas o valor de salvamento desses arquivos é ignorado #mindblown. Não sei por que, é a parte mais importante da adição de qualquer campo ou formulário.
Eu tentei seguir os documentos do Magento , mas ... é uma merda.
Para fins de teste, tento adicionar outros campos ao endereço de entrega, apenas para ignorar escopos personalizados, conjuntos de dados personalizados, provedores de dados personalizados e outras coisas não documentadas, o que parece muito estranho para mim.
Não tenho idéia do que significa que o formulário é "estático" ou "dinâmico". Para mim, todos os formulários de checkout são construídos dinamicamente sobre os modelos do KnockoutJS, mas ... quando tento o modo "estático", sou capaz de adicionar entradas aqui (por isso é um formulário estático ou não?).
Primeiro, tento depurar por que os observáveis do Knockout simplesmente ignoram meus campos durante a análise e o envio de dados. Descobri que meus campos têm name
parâmetro vazio , mas não consigo gerenciar uma maneira de corrigir esse problema. Na IMO, ele deve ser passado para o renderizador do componente da interface do usuário por meio de inputName
parâmetro, o mesmo que outras opções disabled
, placeholder
etc. (outros parâmetros funcionam bem, verifiquei a configuração gerada a partir do meu XML para a inicialização do módulo de checkout e fica bem para mim)
Segundo, tentei usar o modo "dinâmico" com a criação de plug-in LayoutProcessor
e a transmissão exatamente dos mesmos dados ... e agora tenho campos com name
s, mas o envio ainda não funciona.
Depois de pesquisar no JS, descobri que a preparação dessa solicitação é mantida em module-checkout/view/frontend/web/js/model/shipping-save-processor/default.js
arquivo, o que depende de module-checkout/view/frontend/web/js/model/quote.js
onde os observáveis do Knockout são definidos / criados.
De alguma forma, module-checkout/view/frontend/web/js/model/address-converter.js
atualizo esses observáveis e depende de module-checkout/view/frontend/web/js/model/new-customer-address.js
onde finalmente encontrei algumas opções interessantes de configuração - lista de todos os campos de endereço.
Quando adiciono meus campos aqui, os scripts começam a analisar e enviá-los, OFC eu recebo 500, o back-end b / c não os reconhece ... (não pergunte, eu não sou um desenvolvedor de back-end)
Então, aqui estão minhas perguntas:
- É uma maneira correta de lidar com esse tipo de personalização? (b / c parece estranho para mim)
- Como enviar valores de campos não relacionados a novos endereços? Não vi configuração semelhante em nenhum lugar. No meu caso, gostaria de enviar um comentário do pedido (área de texto) e solicitação de fatura (caixa de seleção). Ambos não devem ser salvos como um endereço, porque alguns usuários podem querer salvar esse endereço para uso futuro.
- Existe alguma documentação sobre formulários "estáticos" e "dinâmicos" ou alguns exemplos / comparação? Vale a pena pensar dessa maneira?
Pergunta existencial adicional:
- Por que isso é tão inconsistente? Por que eu tenho que definir vários parâmetros em arquivos XML / PHP, enquanto o Magento pode apenas renderizar uma entrada e então eu tenho que lidar com tudo sozinho?