I m trying to do some dependent dropdown that shows me information from the state,streets and parishes from other countries , but the dropdown only shows the states not the other things, i would like to know what is that happening and how can i solve it
- Below i will let the code of my dropdown, my functions that are in the controller, my routes and my scripts
- Also there is something that has the name of
Lugar
that is my model
Code of the functions in Cliente_naturalController
public function getMunicipio(Request $request){ if ($request->ajax()){ $municipios = Lugar::where('fk_lugar',$request->id_lugar)->get(); foreach($municipios as $municipio){ $municipiosArray[$municipio->id_lugar] = $municipio->nombre; } return response()->json($municipiosArray); } } public function getParroquia(Request $request){ if ($request->ajax()){ $parroquias = Lugar::where('fk_lugar',$request->id_lugar)->get(); foreach($parroquias as $parroquia){ $parroquiasArray[$parroquia->id_lugar] = $parroquia->nombre; } return response()->json($parroquiasArray); } }
Dropdown code that doesnt work
<div class="form-group row"> <label for="lugar" class="col-md-5 col-form-label text-md-right">Municipio</label> <div class="col-md-6"> <select id="municipio" data-old="{{ old('id_lugar') }}" name="id_lugar" class="form-control{{ $errors->has('id_lugar') ? ' is-invalid' : '' }}"></select> @if ($errors->has('id_lugar')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('id_lugar') }}</strong> </span> @endif </div> </div> <div class="form-group row"> <label for="lugar" class="col-md-5 col-form-label text-md-right">Parroquia</label> <div class="col-md-6"> <select id="parroquia" data-old="{{ old('id_lugar') }}" name="id_lugar" class="form-control{{ $errors->has('id_lugar') ? ' is-invalid' : '' }}"></select> @if ($errors->has('id_lugar')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('id_lugar') }}</strong> </span> @endif </div> </div>
Routes
Route::get('/municipios', 'Cliente_naturalController@getMunicipio'); Route::get('/parroquias','Cliente_naturalController@getParroquia');
Scripts in the view
@section('script') <script> $('#estado').on('change',function(){ var id_estado = $(this).val(); //console.log(id_estado); if ($.trim(id_estado) != ''){ $.get('municipio',{id_lugar:id_estado},function(municipios){ console.log(municipios); $("#municipio").find('option').remove(); $('#municipio').append("<option value=''>Selecciona un municipio</option>"); $.each(municipios,function(index,valor){ $('#municipio').append("<option value='" + index + "'>" + valor + "</option>") }); }); } }); </script> <script> $('#municipio').on('change',function(){ var id_municipio = $(this).val(); if ($.trim(id_municipio) != ''){ $.get('parroquias',{id_lugar:id_municipio},function(parroquias){ $("#parroquia").find('option').remove(); $('#parroquia').append("<option value=''>Selecciona una parroquia</option>"); $.each(parroquias,function(index,valor){ $('#parroquia').append("<option value'" + index + "'>" + valor + "</option>") }); }); } }); </script> @endsection
Advertisement
Answer
I solve it putting my <form>
withmethod=POST
in the same view of the register that has laravel the resultant view has two forms that use different controllers, also retire this script <script src="{{ asset('js/app.js') }}" defer></script>
*It looks like this *
<form method="POST" action="{{ route('register') }}"> @csrf <div class="form-group row " id="name" > <label for="name" class="col-md-5 col-form-label text-md-right" >{{ __('Primer Nombre') }}</label> <div class="col-md-7"> <input id="name" type="text" placeholder="Primer Nombre" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus> @error('name') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> </form> <form method="POST" action="/clienteNatural"> @csrf <div class="form-group row"> <label for="lugar" class="col-md-8 col-form-label text-md-right">DIRECCION</label> </div> <div class="form-group row"> <label for="lugar" class="col-md-5 col-form-label text-md-right">Estado</label> <div class="col-md-6"> <select id="estado" name="id_lugar" class="form-control{{ $errors->has('id_lugar') ? ' is-invalid' : '' }}"> @foreach($lugares->get() as $index => $lugar) <option value="{{ $index }}" {{ old('id_lugar') == $index ? 'selected' : '' }}> {{ $lugar }} </option> @endforeach </select> @if ($errors->has('id_lugar')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('id_lugar') }}</strong> </span> @endif </div> </div> <div class="form-group row"> <label for="lugar" class="col-md-5 col-form-label text-md-right">Municipio</label> <div class="col-md-6"> <select id="municipio" data-old="{{ old('id_lugar') }}" name="id_lugar" class="form-control{{ $errors->has('id_lugar') ? ' is-invalid' : '' }}"></select> @if ($errors->has('id_lugar')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('id_lugar') }}</strong> </span> @endif </div> </div> </form>