[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Roberto Noya
Criador Roberto Noya 09/11/2020

 

Olá Carlos,

Estou criando um form com vue onde serão submetidos dados e arquivos

Eu criei um objeto que conterá todas as informações a serem submetidas onde dentre elas existe um array de objetos chamado moradores:

documents: {

                moradores: [ {nome: ‘eeee’, cpf: ’xxxxxxxx’, parentesco: ‘Esposa’}, ...]

}

Para submeter existe o seguinte método:

Submit(){

  const formData = new FormData()

  formData.append('moradores', this.documents.moradores)

  let config = { header : {'Content-Type' : 'multipart/form-data'}  

  axios.post(‘api/v1/proposals’, formData, config)…

 

No back-end ocorre o seguinte erro quando eu tento contar o número de elementos no array moradores.

{message: "count(): Parameter must be an array or an object that implements Countable",…}

exception: "ErrorException"

 

Quando eu submeto direto (sem uso de formData.append) consigo processar o array no back-end sem erros:

axios.post(‘api/v1/proposals’, this.documents, config)…

 

Onde estou errando?

 

 

Manager Carlos Ferreira 09/11/2020

Olá, Roberto!
Tudo bem?

Vai precisar converter esse Array em query params.

Mas, antes de qualquer coisa, vamos validar como os dados chegam na API:
dd($request->all()); // me envia um print: https://imgur.com/upload

Está usando alguma ferramenta no backend, como o Telescope?

Carlos Ferreira
Criador Roberto Noya 09/11/2020

Olá Carlos,

Descobri o problema. Fiquei confuso se devia tratar o problema no back-end ou front-end

No caso a solução foi a seguinte:

if(this.documents.moradores != null){

  for (let i = 0; i < this.documents.moradores.length; i++) {

    for (let key of Object.keys(this.documents.moradores[i])) {

      formData.append(`moradores[${i}][${key}]`, this.documents.moradores[i][key]);

    }

  }

}

Para mim funcionou não se se voce tem outra sugestão.

 

 

 

Roberto Noya
Manager Carlos Ferreira 09/11/2020

Entendi porque não funcionou, moradores é uma matrix, por isso não deu certo.

A implementação que fez está ok. Parabéns!

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!