Tenha no banco de dados do seu projeto Laravel a tabela de cidades brasileiras
Adicione o package
$ composer require artesaos/cidadesbr
Adicione o Provider no arquivo config/app.php
// file START ommited
'providers' => [
// other providers ommited
'Artesaos\Providers\CidadesServiceProvider',
],
// file END ommited
Importe migrations/seeds
$ php artisan vendor:publish --provider="Artesaos\Providers\CidadesServiceProvider"
Execute
$ composer dump-auto
$ php artisan migrate
$ php artisan db:seed --class="CidadesSeeder"
O model Artesaos\Cidade
já está disponível para uso:
<?php
namespace Artesaos;
use Illuminate\Database\Eloquent\Model;
class Cidade extends Model{
public $timestamps = false;
protected $fillable = ['nome', 'uf'];
}
As rotas abaixo já estão disponíveis para uso:
Route::get('/ufs/', function($uf = null){
return response()->json(\Artesaos\Cidade::select('uf')->distinct('uf')->orderBy('uf')->get());
});
Route::get('/cidades/{uf}', function($uf = null){
return response()->json(\Artesaos\Cidade::where('uf', $uf)->orderBy('nome')->get());
});
Se desejar, um plugin está disponível para carregar seus selectBoxes via ajax.
Adicione o scripts.js
<script src="https://github.com/artesaos/cidadesbr/raw/master/vendor/artesaos/cidades/js/script.js"></script>
HTML:
<select id="uf" default="MG"></select>
<select id="cidade"></select>
JS:
$('#uf').ufs({
onChange: function(uf){
$('#cidade').cidades({uf: uf});
}
});