Como salvar dados de um formulário dinamico no Laravel
Eu tenho um campo JSON no projeto laravel, chamado "groups", sendo que eu criei um formulario dianamico com JQUERY, e quero salvar esses dados.
- Abaixo o formato que precisar ir ao banco
- Como esta indo ao banco
- Aquivo que cria o formulario
- Abaixo o formato que precisar ir ao banco
[ { "title": "TAXA ZERO", "rows": [ { "entrada_percentual": "20%", "entrada_valor": "R$ 7.952", "parcelas": "+12x", "parcelas_valor": "R$ 2.735" }, { "entrada_percentual": "20%", "entrada_valor": "R$ 7.952", "parcelas": "+12x", "parcelas_valor": "R$ 2.735" } ] }, { "title": "TAXA ZERO", "rows": [ { "entrada_percentual": "20%", "entrada_valor": "R$ 7.952", "parcelas": "+12x", "parcelas_valor": "R$ 2.735" } ] } ]
- Como esta indo ao banco
{ "rows": { "parcelas": [ "123123", "5344" ], "entrada_valor": [ "123123", "4343" ], "parcelas_valor": [ "123123", "66533" ], "entrada_percentua": [ "34312", "321321" ] }, "title": [ "Condiçao 1" ] }
- Aquivo que cria o formulario
<hr> <div class="formulario"> <div class="itens"> <div id="item" class="item"> <div class="form-row"> <div class="form-group col-md-10"> {{ Form::label('Titulo')}} <input type="text" class="form-control" name="{{$name}}[title][]"> </div> <div class="form-group col-md-2"> <button class="removerCondicao btn btn-outline-danger" type="button"> <i class="fas fa-times-circle"></i> </button> </div> </div> <div class="registros"> <div id="row1" class="content_registros row form-row"> <div class="form-group col-sm-2"> {{ Form::label('% Entrada') }} <input type='text' class='form-control' name='{{$name}}[rows][entrada_percentua][]'> </div> <div class="form-group col-sm-2"> {{ Form::label('Valor de Entrada') }} <input type="text" class="form-control" name="{{$name}}[rows][entrada_valor][]"> </div> <div class="form-group col-sm-2"> {{ Form::label('Número de Parcelas') }} <input type="text" class="form-control" name="{{$name}}[rows][parcelas][]"> </div> <div class="form-group col-sm-2"> {{ Form::label('Valor das Parcelas') }} <input type="text" class="form-control" name="{{$name}}[rows][parcelas_valor][]"> </div> <div class="form-group col-sm-2"> <button class="removerRegistro btn btn-outline-danger" type="button"> <i class="fas fa-times-circle"></i> </button> </div> </div> </div> <button class="novoRegistro btn btn-outline-primary" type="button">Adicionar Registro</button> <hr> </div> </div> <button class="novaCondicao btn btn-outline-primary" type="button">Adicionar Condição</button> </div> @push('scripts') <script> $(document).ready(function () { var entrada_per = '{{$name}}[rows][entrada_percentua][]'; var entrada_valor = '{{$name}}[rows][entrada_valor][]'; var parcelas = '{{$name}}[rows][parcelas][]'; var parcelas_valor = '{{$name}}[rows][parcelas_valor][]'; var $form = $('.formulario'), $itens = $form.find('.itens'), // Conteudo do Formulário $item = $form.find('.item').clone(); // Cria uma nova condição $form.on('click', '.novaCondicao', function (e) { e.preventDefault(); $item.clone().appendTo($itens); }); // Criando um novo registro $form.on('click', '.novoRegistro', function (e) { e.preventDefault(); // Contando as Row da class registro length = $(this).parent('.item').children('.registros').children('.row').length; fields = '<div id="row' + (length + 1) + '" class="content_registros row form-row">'; fields += '<div class="form-group col-sm-2"> <label>% Entrada</label> <input type="text" class="form-control" name="'+entrada_per+'' + (length + 1) + '"> </div>'; fields += '<div class="form-group col-sm-2"> <label>Valor Entrada</label> <input type="text" class="form-control" name="'+entrada_valor+'"> </div>'; fields += '<div class="form-group col-sm-2"> <label>Número de Parcelas</label> <input type="text" class="form-control" name="'+parcelas + '"> </div>'; fields += '<div class="form-group col-sm-2"> <label>Parcelas</label> <input type="text" class="form-control" name="'+ parcelas_valor+'"> </div> '; fields += '<div class="form-group col-sm-2"> <button class="removerRegistro btn btn-outline-danger" type="button"> <i class="fas fa-times-circle"></i> </button> </div>'; container = $(this).parent('.item').children('.registros'); container.append(fields); }); // Remover Registro $form.on('click', '.removerRegistro', function () { $(this).parents('.content_registros').first().remove(); }); // Remover Condicao $form.on('click', '.removerCondicao', function () { $(this).parents('.item').first().remove(); }); }); </script> @endpush
Romulo Sousa
Curtidas 0
Melhor post
Vitor Schweder
05/02/2019
Você terá que passar esses parâmetros para uma rota utilizando o verbo http POST, uma requisição $.ajax é mole de fazer, no laravel tu define a rota exemplo Route::post('/cliente/incluir', 'ClienteController@salvar');
Dentro do Controlador vai ter um método salvar (no meu caso):
No Javascript:
No PHP:
Dentro do Controlador vai ter um método salvar (no meu caso):
No Javascript:
$.ajax({ type:'POST', dataType: 'json', data:{"nome" : nome, "email" : email}, url:'cliente/incluir', success: function(retorno) { } });
No PHP:
public function salvar(Request $request) { // Aqui estou validando o campo nome $request->validate([ 'nome' => 'required' ]); $cliente = new Cliente([ 'nome' => $request->get('nome'), 'email' => $request->get('email'), ]); $cliente->save(); return response()->json(json_encode(['id' => $cliente->id])); }
GOSTEI 2