[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Davisson Charles
Criador Davisson Charles 24/04/2019

Boa tarde Carlos, estou tendo dificuldade para resolver um problema.

se eu montar o meu data assim, funciona normalmente

data () {

        return {            

            campo: '',

        }

    },

Porem se eu tiver muitos campos no formulario e quiser usar o formData para agrupar meus dados da erro

data () {

        return {

            formData: {

                nome: '', 

            }

        }

    },

 

erro: Property or method "nome" is not defined on the instance but referenced during render. 

Manager Carlos Ferreira 24/04/2019

Olá, Davisson!
Tudo bem?

Me mostra o código completo desse component, porque assim posso ter uma visão geral melhor e te ajudar a resolver o problema.

No aguardo.

Carlos Ferreira
Criador Davisson Charles 24/04/2019

O codigo se encontra no link:

https://drive.google.com/open?id=1NL0td8AbqThiAxTtJ-UdSntQ76_rNIzK

Davisson Charles
Criador Davisson Charles 24/04/2019

Professor, consegui ancontrar a solução. No html nos respectivos campos é necessário incluir o formdata na diretiva ( formData.nomecampo ) , e no js apenas declarar o objeto formData{}, foi uma falta de atenção minha, mas gostaria de um esclarecimento.

Com essa estrutura o backend recebe um array com outro array chamado formDarta contendo as informações, com isso eu preciso armazenar o request em uma variavel, e depois acessar o array interno  $variavel = $this->request->all() e depois $variavel['formData'].

E nesse formato se eu quiser isolar um campo especifico eu precisaria fazer $formData['formData']['nome'].

Esta correto?

Davisson Charles
Manager Carlos Ferreira 24/04/2019

 Analisei o seu component.

Como as suas propriedades estão escapsuladas no formData, precisa chegar pelas através da hierarquia definida.

<input type="text" name="name" value="{{ formData.name }}">

Quando você for fazer uma request para o backend (seja ele qual form) você envia a propriedade formData.

E enviando essa propriedade formData via ajax, lá na API recebe um array ou objeto com os valores dela: ['name', 'campo2', 'etc']

Carlos Ferreira
Criador Davisson Charles 24/04/2019

Ao encapsular os campos no formData, o meu backend recebe:

array:1 [
  "formData" => array:3 [
    "campo1" => "Teste"
    "campo2" => "teste"
    "campo3" => "teste"
  ]
]

E quando se usa o FormRequest para validar os dados de entrada ele não valida, por que não consegue capturar os campos, como faço para trabalhar com  FormRequest nesse cenário? 

Davisson Charles
Manager Carlos Ferreira 24/04/2019

Me mostra como ficou a sua conta ajax, no Vue.js.

É porque você está passando o formData como um objeto, precisa fazer algo assim:
const params = this.formData
axios.post('/url', { params })

Carlos Ferreira
Criador Davisson Charles 24/04/2019

Segui a sua dica e deu certo, Obrigado!

Davisson Charles
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!