Giter Site home page Giter Site logo

blitsoftwares / laravel-states-and-cities Goto Github PK

View Code? Open in Web Editor NEW
15.0 3.0 9.0 275 KB

País, cidades e estados. Com código IBGE Brasil. Com migrations, models, seeder, routes, config e views.

PHP 96.08% HTML 3.56% JavaScript 0.36%
cidade ibge estado laravel cities cidades-brasileiras laravel-states estados paises-estados-cidades paises

laravel-states-and-cities's Introduction

laravel-states-and-cities

  • Laravel.
  • País, estados e cidades.
  • Já populado com estados e cidades brasileiras com código do IBGE

Tasks

Lista de prioridades de novas implementações

  • Traid e contrato
    • Criar uma traid para que qualquer model (empresa,pessoa,fornecedores) possua endereços atraves de uma tabela pivo dinamica.
  • Melhorar o script JS
    • Consulta de CEP para selecionar estado e cidade automaticamente ao retornar o endereço do cep digitado.

Ajude-nos! Vamos fazer isso juntos, faça seu fork!

DER - RELATIONAL ENTITY DIAGRAM

Image of Blit Softwares

Instalação

Edite seu composer para instalar versoes dev.

"minimum-stability": "dev"

Via composer

composer require blitsoftwares/laravel-states-and-cities

ou manualmente adicione no seu composer.json

{
    "require": {
    "blitsoftwares/laravel-states-and-cities": "dev-master"
    }
} 

2. Provider

Se você está usando Laravel 5.5+ pule esta sessão, pois nosso pacote possui suporte à auto-discovery.

'providers' => [
        Blit\StatesAndCities\Providers\StatesAndCitiesServiceProvider::class,
    ],

3. Migration

Execute as migrações, as tabelas serão criadas em seu banco de dados;

php artisan migrate 

4. Seeder

Atualmente está disponível via seeder o Brasil, com todos os estados e cidades. Estados e cidades possuem código do IBGE

Quem desejar contribuir na implementação de novos países, fique à vontade, faça o fork, implemente os seeds e envie seu PullRequest.

php artisan db:seed --class=Blit\\StatesAndCities\\Seeds\\DatabaseSeeder 

5. Publish

Publique os arquivos do pacote:

php artisan vendor:publish --provider=Blit\\StatesAndCities\\Providers\\StatesAndCitiesServiceProvider

Arquivos a serem publicados

  • Lang (traduções)
    • resources/lang/vendor/StatesAndCities
  • Views
    • resources/views/vendor/StatesAndCities
  • Assets
    • public/vendor/StatesAndCities
  • Config
    • config/states-and-cities.php

6. Routes

Rotas disponíveis

  • /countries
  • /states
  • /cities
  • /addresses

7. Javascript

Para que os selects entre países, estados e cidades fiquem dinâmicos, é necessário adicionar o JS do pacote, juntamente com o jquery.mask para que o campo de CEP fique com máscara.

6.1 - Adicione no fim do seu layout (template)

<script src="//oss.maxcdn.com/jquery.mask/1.11.4/jquery.mask.min.js"></script>
<script src="/vendor/StatesAndCities/js/blit-states-and-cities.js"></script>

Manualmente

Caso você esteja integrar países, cidades e estados em seu formulário, basta adicionar os selects abaixo.

Não mude o ID do componente, pois o JS usa ele para fazer os loads. O atributo NAME pode ser personalizado conforme sua tabela de endereços.

Para países (necessário para load de estados)

<select name="country_id" id="country" data-default="{{ config('states-and-cities.default-country') }}"></select>

Para estados (necessário para o load de cidades)

<select name="state_id" id="state" data-default="{{ config('states-and-cities.default-state') }}"></select>

Para cidades

<select name="city_id" id="city" data-default="{{ config('states-and-cities.default-city') }}"></select>

Para CEP

<input name="postal_code" id="postal_code" data-autocomplete="true" data-mask="{{ config('states-and-cities.postal_code_mask') }}" type="text" }}">

Configurações

Na pasta config do laravel, se encontra publicado o arquivo de configuração do pacote:

  • states-and-cities.php

Nele possi algumas variáveis que pode ser personalizada conforme sua necessidade:

  • default-country :: País padrão para o auto load
  • default-state :: Estado padrão para o auto load
  • default-city :: Cidade padrão para o auto load
  • postal_code_mask :: Padrão para máscara do CEP usando nosso componente
  • routes_middleware :: Middleware para as rotas

Os valores a serem adicionados nas 3 primeiras variáveis são os IDs da sua respectiva tabela, acesse as rotas e olhe a coluna # que possui os ids dos registros.

Auto preencher com CEP digitado

O pacote está integrado com VIACEP. Para utilizar, use o componente de CEP na sessão MANUALMENTE e adicione os campos de endereços com os IDs abaixo:

Para logradouro:

<input id="street" >

Para bairro:

<input id="district" >

Os seletores automáticos para estado e cidade após uma consulta do CEP, ainda será implementado.

Traduções

As views de cadastros nativas de países, estados, cidades e endereços, estão integradas com o LANG do laravel. Idiomas disponívies

  • Portugues Brasil (pt-br)
  • Inglês (en)

Os arquivos estão disponíveis na pasta:

  • resources/lang/vendor/StatesAndCities

Configure o locale do seu laravel.

Informações

Este pacote é mantido pela equipe de desenvolvedores da Blit Softwares. Faça um fork e nos ajude com novidades e eventuais falhas.

laravel-states-and-cities's People

Contributors

blitsoftwares avatar lucasrpasquetto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

laravel-states-and-cities's Issues

Referenciar 'country' como foreign key

Após seguir todos os passos do README, tentei referenciar um país a um usuário e o seguinte erro apareceu. Como se a migration não existisse, mas pelo que entendi o pacote já cria tudo.

Illuminate\Database\QueryException : SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "countries" does not exist (SQL: alter table "users" add constraint "users_country_id_foreign" foreign key ("country_id") references "countries" ("id"))

        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('cpf')->unique();
            $table->string('phone');
            $table->string('phone2')->nullable();
            $table->integer('country_id')->unsigned();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

        Schema::table('users', function (Blueprint $table){
            $table->foreign('country_id')->references('id')->on('countries');
        });

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.