Array append error
[Finalizado Pelo Aluno]
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?
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?
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.
Entendi porque não funcionou, moradores é uma matrix, por isso não deu certo.
A implementação que fez está ok. Parabéns!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!