首页 > 解决方案 > PHP - Laravel:我的提交按钮不起作用

问题描述

我正在开发一个网络应用程序,目前正在编写一个表单。由于某种原因,即使填写了表格,它也没有首先提交,我必须刷新页面才能将其提交到后端。

这是表单的代码:

@extends('layout.admin')

@section('styles')
    <link rel="stylesheet" href="{{ asset('css/vendor/bootstrap-float-label.min.css') }}">
    <link rel="stylesheet" type="text/css" href="{{ asset('css/vendor/select2.min.css')}}">
    <link rel="stylesheet" type="text/css" href="{{ asset('css/vendor/select2-bootstrap.min.css')}}">
@endsection

@section('content')
    @if (session()->has('success'))
        <div class="alert alert-success rounded" role="alert">{{ session('success') }}</div>
    @endif
    @if(session()->has('error'))
        <div class="alert alert-danger rounded" role="alert">{{ session('error') }}</div>
    @endif
    <form method="post" id="form" action="{{ isset($cliente) ? route('admin.clientes.update', $cliente) : route('admin.clientes.inserir') }}" class="form bv-form" enctype="multipart/form-data" novalidate>
        @csrf
        @if(isset($cliente))
            @method('PUT')
        @endif
        <div class="container">
            <div class="row">
                <div class="col-md-7">
                    <div class="card">
                        <div class="card-body">
                            <div class="row">
                                <div class="col-md-2 form-group has-float-label position-relative error-l-50">
                                    <label for="tipo-cliente">Tipo Cliente: </label> <br>
                                    <input type="radio" name="tipo" id="p_fisica" value="1" @if(isset($cliente) && $cliente->tipo === 1) checked @endif> Pessoa Fisica <br>
                                    <input type="radio" name="tipo" id="p_juridica" value="2" @if(isset($cliente) && $cliente->tipo === 2) checked @endif> Pessoa Juridica
                                </div>                        
                                <div class="col form-group position-relative error-l-50 has-float-label" id="div_nome">
                                    <label for="nome">Nome</label>
                                    <input type="text" id="nome" name="nome" class="form-control" value="{{ isset($cliente) ? $cliente->nome : old('nome') }}">
                                </div>
                                <div class="col form-group position-relative error-l-50 has-float-label" id="div_cpf">
                                    <label for="cpf">CPF</label>
                                    <input type="text" name="cpf" id="cpf" class="form-control cpf" value="{{ isset($cliente) ? $cliente->cpf : old('cpf') }}">
                                </div>
                                <div class="col-md-2 form-group has-float-label position-relative error-l-50" id="div_sexo">
                                    <label for="sexo">Sexo</label><br>
                                    <input type="radio" name="sexo" id="sexo_masc" value="1" @if(isset($cliente) && $cliente->sexo === 1) checked @endif> Masculino <br>
                                    <input type="radio" name="sexo" id="sexo_fem" value="2" @if(isset($cliente) && $cliente->sexo === 1) checked @endif> Feminino
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50 display-invisible" id="div_cnpj">
                                    <label for="cnpj">CNPJ</label>
                                    <input type="text" name="cnpj" id="cnpj" class="form-control cnpj" value="{{ isset($cliente) ? $cliente->cnpj : old('cnpj') }}" onkeyup="isValidCNPJ(this)">
                                </div>
                                <div class="col form-group position-relative error-l-50 has-float-label display-invisible" id="div_razao">
                                    <label for="razao_social">Razao Social</label>
                                    <input type="text" name="razao_social" class="form-control" id="razao_social" value="{{ isset($cliente) ? $cliente->razao_social : old('razao_social') }}">
                                </div>
                            </div> <!-- row end -->
                            <div class="row">
                                <div class="col-md-3 form-group position-relative error-l-50 has-float-label">
                                    <label for="empresa_filial">Empresa Filial: </label>
                                    <select name="empresa_filial" class="form-control select2-single">
                                        @foreach($empresas as $empresa)
                                            <option value="{{$empresa->id}}" @if(isset($cliente) && $cliente->empresa_filial === $empresa->id) selected @endif>{{$empresa->nome_empresa}}</option>
                                        @endforeach
                                    </select>
                                </div>
                                <div class="col-md-4 has-float-label form-group position-relative error-l-50">
                                    <label for="email">Email</label>
                                    <input type="email" name="email" class="form-control" value="{{ isset($cliente) ? $cliente->email : old('email') }}">
                                </div>
                                <div class="col-md-2 has-float-label form-group position-relative error-l-50">
                                    <label for="cod_pais_2">Pais</label>
                                    <input type="text" name="cod_pais_2" class="form-control cod_pais_2" required value="+55" value="{{ isset($cliente) ? $cliente->cod_pais_2 : old('cod_pais_2') }}">
                                </div>
                                <div class="col-md-3 has-float-label form-group position-relative error-l-50">
                                    <label for="telefone">Telefone</label>
                                    <input type="text" name="telefone" class="form-control telefone" id="telefone" value="{{ isset($cliente) ? $cliente->telefone : old('telefone') }}">
                                </div>
                            </div> <!-- row end -->
                            <div class="row">
                                <div class="col-md-2 has-float-label form-group position-relative error-l-50">
                                    <label for="cep">CEP</label>
                                    <input type="text" name="cep" class="form-control cep" id="cep" name="cep" required value="{{ isset($cliente) ? $cliente->cep : old('cep') }}">
                                </div>
                                <div class="col-md-5 has-float-label form-group position-relative error-l-50">
                                    <label for="endereco">Endereco</label>
                                    <input type="text" name="endereco" class="form-control" required id="endereco" value="{{ isset($cliente) ? $cliente->endereco : old('endereco') }}">
                                </div>
                                <div class="col-md-2 has-float-label form-group position-relative error-l-50">
                                    <label for="cod_pais_1">Pais</label>
                                    <input type="text" name="cod_pais_1" class="form-control cod_pais_1" required value="+55" value="{{ isset($cliente) ? $cliente->cod_pais_1 : old('cod_pais_1') }}">
                                </div>
                                <div class="col-md-3 has-float-label form-group position-relative error-l-50">
                                    <label for="telefone">Celular</label>
                                    <input type="text" name="celular" class="form-control celular" required value="{{ isset($cliente) ? $cliente->celular : old('celular') }}">
                                </div>
                            </div> <!-- row end -->
                            <div class="row">
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="complemento">Complemento</label>
                                    <input type="text" name="complemento" required class="form-control" id="complemento" value="{{ isset($cliente) ? $cliente->complemento : old('complemento') }}">
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="ponto_referencia">Ponto de Referencia</label>
                                    <input type="text" name="ponto_referencia" class="form-control" id="ponto_referencia" value="{{ isset($cliente) ? $cliente->ponto_referencia : old('ponto_referencia') }}">
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="bairro">Bairro</label>
                                    <input type="text" name="bairro" class="form-control" required id="bairro" value="{{ isset($cliente) ? $cliente->bairro : old('bairro') }}">
                                </div>
                            </div><!-- row end -->
                            <div class="row">
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cidade">Cidade</label>
                                    <input type="text" name="cidade" required id="cidade" class="form-control" value="{{ isset($cliente) ? $cliente->cidade : old('cidade') }}">
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="uf">Estado</label>
                                    <select class="form-control select2-single" name="uf" required>
                                        <option value="" selected>Selecione</option>
                                        @foreach(\App\Helpers\Helpers::estados() as $estado => $nome)
                                            <option value="{{ $estado }}" @if(isset($cliente) && $cliente->uf === $estado) selected @endif>{{ $nome }}</option>
                                        @endforeach
                                    </select>
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="pais">Pais</label>
                                    <select class="form-control select2-single" required id="pais" name="pais" data-width="100%">
                                        @foreach(\App\Helpers\Helpers::paises() as $pais)
                                            <option value="{{ $pais['nome'] }}" @if(isset($cliente) && $cliente->pais === $pais) selected @endif>{{ $pais['nome'] }}</option>
                                        @endforeach
                                    </select>
                                </div>
                            </div><!-- row end -->
                            <div class="row">
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="observacao">Observacao</label>
                                    <input type="text" name="observacao" class="form-control" id="observacao" value="{{ isset($cliente) ? $cliente->observacao : old('observacao') }}">
                                </div>
                            </div><!-- row end -->
                        </div>
                    </div>
                </div>
                <div class="col-md-5">
                    <div class="card" style="padding-bottom: 2px">
                        <div class="card-body">
                            <div class="row">
                                <h3 style="margin-left:8px">Informacoes de Cobranca</h3>
                            </div><!-- row end -->
                            <div class="row">               
                                <input type="checkbox" name="reciclar_info" id="client-check" style="margin-left:8px" onchange="chargingFields()">
                                <span style="margin: 10px">Usar as mesmas informacoes de endereco para cobranca</span>
                                <hr class="style-six"> <br>
                            </div>
                            <div class="row">
                                <div class="col-md-4 has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_cnpj">CNPJ</label>
                                    <input type="text" name="cobranca_cnpj" onkeyup="isValidCobrancaCNPJ()" class="form-control cnpj" id="cobranca_cnpj" value="{{ isset($cliente) ? $cliente->cobranca_cnpj : old('cobranca_cnpj') }}">
                                </div>
                                <div class="col-md-8 has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_razao_social">Razao Social</label>
                                    <input type="text" name="cobranca_razao_social" class="form-control" id="cobranca_razao_social" value="{{ isset($cliente) ? $cliente->cobranca_razao_social : old('cobranca_razao_social') }}">
                                </div>
                            </div><!-- row end -->
                            <div class="row">
                                <div class="col-md-4 has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_cep">CEP</label>
                                    <input type="text" name="cobranca_cep" class="form-control cep" id="cobranca_cep" value="{{ isset($cliente) ? $cliente->cobranca_cep : old('cobranca_cep') }}">
                                </div>
                                <div class="col-md-8 has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_endereco">Endereco</label>
                                    <input type="text" name="cobranca_endereco" class="form-control" id="cobranca_endereco" value="{{ isset($cliente) ? $cliente->cobranca_endereco : old('cobranca_endereco') }}">
                                </div>
                            </div>
                            <div class="row">
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_complemento">Complemento</label>
                                    <input type="text" name="cobranca_complemento" class="form-control" id="cobranca_complemento" value="{{ isset($cliente) ? $cliente->cobranca_complemento : old('cobranca_complemento') }}">
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_ponto_referencia">Ponto de Referencia</label>
                                    <input type="text" name="cobranca_ponto_referencia" id="cobranca_ponto_referencia" class="form-control" value="{{ isset($cliente) ? $cliente->cobranca_ponto_referencia : old('cobranca_ponto_referencia') }}">
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_bairro">Bairro</label>
                                    <input type="text" name="cobranca_bairro" class="form-control" id="cobranca_bairro" value="{{ isset($cliente) ? $cliente->cobranca_bairro : old('cobranca_bairro') }}">
                                </div>
                            </div>
                            <div class="row">
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_cidade">Cidade</label>
                                    <input type="text" name="cobranca_cidade" id="cobranca_cidade" class="form-control" value="{{ isset($cliente) ? $cliente->cobranca_cidade : old('cobranca_cidade') }}">
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_uf">Estado</label>
                                    <select class="form-control select2-single" name="cobranca_uf" id="cobranca_uf">
                                        <option value="" selected>Selecione</option>
                                        @foreach(\App\Helpers\Helpers::estados() as $estado => $nome)
                                            <option value="{{ $estado }}" 
                                                    @if(isset($cliente) && $cliente->cobranca_uf === $estado) selected @endif>{{ $nome }}</option>
                                        @endforeach
                                    </select>
                                </div>
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_pais">Pais</label>
                                    <select class="form-control select2-single" name="cobranca_pais" id="cobranca_pais">
                                        @foreach(\App\Helpers\Helpers::paises() as $pais)
                                            <option value="{{ $pais['nome'] }}" @if(isset($cliente) && $cliente->cobranca_pais === $pais) selected @endif>{{ $pais['nome'] }}</option>
                                        @endforeach
                                    </select>
                                </div>
                            </div><!-- row end -->
                            <div class="row">
                                <div class="col has-float-label form-group position-relative error-l-50">
                                    <label for="cobranca_observacao">Observacao</label>
                                    <input type="text" name="cobranca_observacao" class="form-control" id="cobranca_observacao" value="{{ isset($cliente) ? $cliente->cobranca_observacao : old('cobranca_observacao') }}">
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
             <div class="row">
                <div class="col-md-1">
                    <button type="submit" id="save-button" class="btn btn-primary float-left" style="margin-top: 10px">
                        @if(isset($cliente))
                            Salvar
                        @else
                            Adicionar
                        @endif
                    </button>
                </div>
            </div><!-- row end -->
        </div>
    </form>
@endsection

@section('js')
    <script src="{{ asset('js/vendor/jquery.validate/jquery.validate.min.js') }}"></script>
    <script src="{{ asset('js/vendor/jquery.validate/additional-methods.min.js') }}"></script>
    <script src="{{ asset('js/vendor/select2.full.js') }}"></script>
    <script>
        const addressApiUrl = "{{ route('pega.endereco') }}";
    </script>
    <script src="{{ asset('js/cliente_form.js') }}"></script>
    <script type="text/javascript">
        var sent = false;

        function isValidCobrancaCNPJ() {
            var strCNPJ = $("#cobranca_cnpj").val();
            console.log(strCNPJ);
            // Caso o CEP não esteja nesse formato ele é inválido!
            var objER = /^[0-9]{14}$/;

            strCNPJ = Trim(strCNPJ);

            if(strCNPJ.length > 0) {
                if(objER.test(strCNPJ) && !sent) {
                    sent = true;
                    formReadOnly(true);

                    $.ajax({
                        method: 'POST',
                        url: "{{ route('pega.cnpj.interno') }}",
                        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                        data: {cnpj: strCNPJ},
                        success: function (data) {
                            if(!data.error) {
                                $.notify({
                                    // options
                                    message: 'CNPJ verificado!'
                                },{
                                    // settings
                                    type: 'success'
                                });

                                $('#cobranca_razao_social').val(data.razao_social);
                                $('#cobranca_cep').val(data.cep);
                                $('#cobranca_endereco').val(data.endereco);
                                $('#cobranca_bairro').val(data.bairro);
                                $('#cobranca_cidade').val(data.cidade);
                                $('#cobranca_uf').val(data.uf);
                                $('#cobranca_endereco').focus();

                                sent = false;

                                $('#form').bootstrapValidator('destroy');
                                $('#form').data('bootstrapValidator', null);
                                $('#form').bootstrapValidator();
                            }else{
                                $.notify({
                                    // options
                                    message: data.msg
                                },{
                                    // settings
                                    type: 'danger'
                                });
                                sent = false;
                            }
                            formReadOnly(false);
                        },
                        error: function (msg) {
                            sent = false;
                            formReadOnly(false);
                        }
                    });
                }
            }
        }

        function Trim(strTexto)
        {
            // Substitúi os espaços vazios no inicio e no fim da string por vazio.
            return strTexto.replace(/\D/g, "");
        }

        function isValidCNPJ() {
            var strCNPJ = $("#cnpj").val();
            console.log(strCNPJ);
            // Caso o CEP não esteja nesse formato ele é inválido!
            var objER = /^[0-9]{14}$/;

            strCNPJ = Trim(strCNPJ);

            if(strCNPJ.length > 0)
            {
                if(objER.test(strCNPJ) && !sent)
                {
                    sent = true;
                    formReadOnly(true);

                    $.ajax({
                        method: 'POST',
                        url: "{{ route('pega.cnpj.interno') }}",
                        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                        data: {cnpj: strCNPJ},
                        success: function (data)
                        {
                            if(!data.error)
                            {
                                $.notify({
                                    // options
                                    message: 'CNPJ verificado!'
                                },{
                                    // settings
                                    type: 'success'
                                });

                                $('#razao_social').val(data.razao_social);
                                $('#cep').val(data.cep);
                                $('#endereco').val(data.endereco);
                                $('#bairro').val(data.bairro);
                                $('#cidade').val(data.cidade);
                                $('#uf').val(data.uf);
                                $('#endereco').focus();

                                sent = false;

                                $('#form').bootstrapValidator('destroy');
                                $('#form').data('bootstrapValidator', null);
                                $('#form').bootstrapValidator();
                            }else{
                                $.notify({
                                    // options
                                    message: data.msg
                                },{
                                    // settings
                                    type: 'danger'
                                });
                                sent = false;
                            }
                            formReadOnly(false);
                        },
                        error: function (msg) {
                            sent = false;
                            formReadOnly(false);
                        }
                    });
                }
            }
        }
    </script>
@endsection

控制器:

    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Models\Empresa;
    use App\Models\Cliente;

    class ClienteController extends Controller
    {

        public function index() {
            $data['clientes'] = Cliente::all();

            return view('admin.clientes.index', $data);
        }

        public function addCliente() {
            $data['empresas'] = Empresa::all();

            return view('admin.clientes.cadastro',$data);
        }

        public function insert(Request $request) {
            $cliente = new Cliente;

            $cliente->empresa_filial = $request->empresa_filial;

            $cliente->tipo = $request->tipo;
            $cliente->email = $request->email;
              
            if ($request->tipo == 1) {
                $cliente->nome = $request->nome;
                $cliente->cpf = $request->cpf;
            
                $cliente->cnpj = $cliente->razao_social = "";
            } else {
                $cliente->cnpj = $request->cnpj;
                $cliente->razao_social = $request->razao_social;

                $cliente->nome = $cliente->cpf = "";
            }

            //had to resume code due to body limitations, but basically what is above for other fields
            $cliente->save();

            return redirect()->back()->with(['success' => 'Cliente cadastrado com sucesso!']);
        }

        public function update($identificacao, Request $request) {
            

            $cliente->save();
        }
    }

我目前正在使用 Laravel 作为框架并尝试了所有方法(@csrf、csrf_field()、通过隐藏输入添加令牌),没有任何效果,我迷路了。

此外,通过检查浏览器的网络活动,获取地址等信息的 POST 方法在表单内工作正常,唯一的问题是提交按钮。

编辑:路线:

Route::prefix('clientes')->group(function() {
        Route::view('/1/detalhes', 'admin.clientes.detalhes')->name('admin.clientes.detalhes');
        Route::get('/', 'ClienteController@index')->name('admin.clientes.index');
        Route::get('/cadastro', 'ClienteController@addCliente')->name('admin.clientes.cadastro');
        Route::get('/atualizar/{cliente}', 'ClienteController@atualizarCliente')->name('admin.clientes.atualizar');
        Route::get('/{cliente}', 'ClienteController@delete')->name('admin.clientes.delete');
        Route::put('/atualizar/{cliente}', 'ClienteController@update')->name('admin.clientes.update');
        Route::post('/cadastro', 'ClienteController@insert')->name('admin.clientes.inserir');
    });

标签: javascriptphphtmljquerylaravel

解决方案


推荐阅读