Fórum [DUVIDA] - Select dependente de Estado / Cidade - Laravel #606243
25/10/2019
0
Boa tarde,
Estou com um problema, pesquisando consegui implementar estes codigos, o objetivo é fazer que quando o usuário selecione a UF do estado no select de cidade só apareça as cidades referente ao ID da UF.
Segue meus codigos:
Migrations de Estado e Cidade:
Controller:
Codigo jQuery:
Labels na View:
Até coloquei um console.log(data); ali para ver no console se ele estava pegando o ID, ele pega o ID mas não mostra nada no select de cidades.
Alguem pode dar um help???
Obrigado!
Estou com um problema, pesquisando consegui implementar estes codigos, o objetivo é fazer que quando o usuário selecione a UF do estado no select de cidade só apareça as cidades referente ao ID da UF.
Segue meus codigos:
Migrations de Estado e Cidade:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public function up() { Schema::create( 'estados' , function (Blueprint $table ) { $table ->bigIncrements( 'id' ); $table ->string( 'nome' ); $table ->string( 'sigla' ); $table ->bigInteger( 'pais_id' )->unsigned(); $table ->timestamps(); }); Schema::table( 'estados' , function (Blueprint $table ){ $table ->foreign( 'pais_id' )->references( 'id' )->on( 'pais' ); }); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public function up() { Schema::create( 'cidades' , function (Blueprint $table ) { $table ->bigIncrements( 'id' ); $table ->string( 'nome' ); $table ->bigInteger( 'estado_id' )->unsigned(); $table ->timestamps(); }); Schema::table( 'cidades' , function (Blueprint $table ){ $table ->foreign( 'estado_id' )->references( 'id' )->on( 'estados' ); }); } |
Controller:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php namespace App\Http\Controllers; use App\Estado; use App\Cidade; use App\Http\Requests; use App\Pessoa; use Illuminate\Support\Facades\Response; use Illuminate\Http\Request; class ClienteController extends Controller { public function index() { $estados = Estado::all()->pluck( 'sigla' , 'id' ); return view( 'pessoas.cliente' , compact( 'estados' )); } public function pegarCidades( $id ) { $cidades = Estado::whereIn( 'estado_id' , $id )->pluck( 'sigla' , 'id' )->get(); return json_encode( $id ); } public function adicionar(){ return view( 'pessoas.adicionar' ); } public function salvar(Request $request ){ \App\Pessoas::create( $request ->all()); return redirect()->route( 'pessoas.cliente' ); } } |
Codigo jQuery:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <script> $(document).ready( function (){ $( 'select[name="estado"]' ).on( 'change' , function (){ var estado_id = $( this ).val(); console.log(estado_id); $.ajax({ url: '/pegarCidades/' +estado_id, type: 'GET' , dataType: 'json' , success: function (data){ console.log(data); $( 'select[name=cidade]' ).empty(); $.each(data, function (key,value){ $( 'select[name=cidade]' ).empty().append( '<option value="' +key+ '">' +values+ '</option>' ); }); } }) }); }); </script> |
Labels na View:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <label for = "text" >Estado:</label> <select name= "estado" id= "estado" class = "form-control" tabindex= "1" > <option value= "" disabled selected>Escolha um Estado</option> @ foreach ( $estados as $key => $value ) <option value= "{{$key}}" >{{ $value }}</option> @ endforeach </select> </div> <div class = "col-mad-6" > <div class = "form-group" > <label for = "text" >Cidade:</label> <select name= "cidade" id= "cidade" class = "form-control" tabindex= "1" > <option value= "" >Escolha uma Cidade</option> </select> </div> |
Até coloquei um console.log(data); ali para ver no console se ele estava pegando o ID, ele pega o ID mas não mostra nada no select de cidades.
Alguem pode dar um help???
Obrigado!

Jorge Grieger
Curtir tópico
+ 0
Responder
Posts
25/10/2019
Jorge Grieger
Só corrigindo no Controller o return json_encode($id) correto é return json_encode($cidades);
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)