3
respostas

PROBLEMAS AO PASSAR O ID DO CLIENTE PELA URL

Boa tarde !

Sou novo na linguagem, fiz o curso e estou refatorando o codigo apresentado no mesmo para um protótipo de cadastros de clientes e veiculos.

Cada cliente possui N veiculos. Quando cadastro um cliente, gero um ID para o mesmo. Ao tentar cadastrar um veiculo para este cliente, não estou conseguindo informar via url o id_cliente, para ser utilizado no insert da tabela veiculo (para relacionar o veiculo ao cliente). Gostaria de um auxilio, pois se tento passar o id_cliente belo 'botão' novo veiculo, gero erro no html, se tento passar via "input type="hidden"", também não consigo capturar o Id.

Segue a função qual o erro esta sendo gerado, pela variavel idcliente estar vindo nula.

func InserirVeiculo(w http.ResponseWriter, r *http.Request) {
    if r.Method == "POST" {

        modelo := r.FormValue("modelo")
        placa := r.FormValue("placa")
        renavam := r.FormValue("renavam")
        idcliente := r.FormValue("idcliente")

        log.Println("InserirVeiculo;", modelo, placa, renavam, idcliente)

        renavamConvertidoParaInt, err := strconv.Atoi(renavam)
        if err != nil {
            log.Println("Erro na conversão do Renavam;", err)
        }

        idClienteConvertidoParaInt, err := strconv.Atoi(idcliente)
        if err != nil {
            log.Println("Erro na conversão do Id_Cliente;", err)
        }

        models.CriaNovoCarro(modelo, placa, renavamConvertidoParaInt, idClienteConvertidoParaInt)
    }
    http.Redirect(w, r, "/", 301)
}

Desde já agradeço a ajuda !

Att.

3 respostas

Problema resolvido !

Oi THIAGO

Poderia compartilhar sua solução?

Abraço!

Ola Otávio !

Resolvi o problema de informar o Id via URL da seguinte forma:

{{range .}} 
   <a href=""novoCarro?idcliente={{.IdCliente}}" class="btn btn-primary mb-2" >Novo Veiculo</a>
{{end}}

Anteriormente, estava sem as tags {{range .}} e {{end}}, ao fazer um teste adicionando as mesmas antes e depois do botão "Novo Veiculo", consegui informar via URL o IdCliente que desejava. Mas isso me gerou outros problemas. Problema 1: Caso o cliente não possua veiculos cadastrados, o botão "Novo Veiculo" não aparece na tela. Problema 2: Caso o cliente tenha mais de 1 carro cadastrado, o botão é duplicado conforme a quantidade de veiculos cadastrados para aquele cliente (ex. 3 veiculos, 3 botões "Novo Cliente"). Alem de eu não conseguir capturar o referido id via URL, utilizando:

idcliente := r.URL.Query().Get("idcliente")

Enfim, para resolver o problema provisoriamente, adicionei um campo no formulario de novo veiculo, para informar manualmente o IdCliente e seguir com o desenvolvimento do projeto.