ULTIMATE PHP Blog

Conheça 15 Ferramentas Essenciais Para PHP
15 Ferramentas Essenciais Para PHP

Coloque seu e-mail abaixo e baixe agora um PDF 100% gratuito mostrando 15 ferramentas indispensáveis para PHP

Fique tranquilo. Odeio spam tanto quanto você :)

Sistema de Cadastro com PHP e Laravel Em 1 Minuto

Sistema de Cadastro com PHP e Laravel Em 1 Minuto

Neste artigo eu mostrei como montar um Sistema de Cadastro em PHP puro.

Hoje quero mostrar como fazer a mesma coisa usando o Framework Laravel, um dos melhores e mais utilizados da atualidade.

Vamos fazer tudo em menos de 1 minuto!

Não acredita?

Continue aqui, que você vai ver como é simples.

Estrutura do Sistema de Cadastro

Vamos usar uma estrutura bem parecida com a que utilizamos no artigo anterior, onde fizemos tudo do zero.

Só vamos mudar uma coisa: não podemos usar a tabela users, pois ela é interna do Laravel, para gerenciar sistema de login.

Em vez disso, vamos criar a entidade Person, representando uma pessoa.

Como o Laravel tem sistema de pluralização, ele já cria a tabela como people.

O Que Faremos

Antes de ligar seu cronômetro, vou te dizer exatamente o que faremos.

1. Instalar o Composer

Se você ainda não usa o Composer, está esperando o quê?

É a ferramenta perfeita pra gerenciar dependências, criar autoloaders e poupar muito tempo e trabalho!

Veja aqui meu artigo sobre o Composer e veja como instalar em seu computador.

2. Instalar o Laravel

Há diversas formas de instalar o Laravel.

Eu optei por instalar o instalador do Laravel via Composer.

Assim o comando laravel fica disponível no terminal, para criar novos projetos sempre que precisar.

3. Importar Biblioteca de CRUD

É possível fazer tudo sem bibliotecas externas, só com os recursos nativos do Laravel.

Mas eu quero te mostrar o poder do framework e suas extensões e bibliotecas de terceiros.

Por isso vou usar a biblioteca CRUD Generator, que vai gerar nosso Sistema de Cadastro (CRUD) com apenas um comando no terminal.

4. Começar a Cadastrar

Depois de rodar um comando (na verdade dois, e logo você vai entender), basta começar a cadastrar.

É tudo bem simples, memso.

Então vamos colocar a mão na massa!

Fique de olho no relógio e veja quanto tempo você vai levar. 🙂

Baixando o Laravel

Com o Composer instalado, vamos baixar o instalador do Laravel, com este comando:

composer global require "laravel/installer=~1.1"

O global diz que o pacote será instalado globalmente, e estará disponível no terminal em qualquer pasta.

Criando o Projeto do Sistema de Cadastro

Vamos usar o comando laravel para criar nosso projeto.

Na pasta onde quiser criá-lo, execute:

laravel new cadastro

Chamei o projeto de cadastro, mas você pode dar o nome que quiser.

Depois é só entrar no diretório, com cd cadastro, pois os comandos seguintes devem ser executados na raiz do projeto.

Baixar a Biblioteca CRUD Generator

Vamos usar nosso melhor amigo, o Composer, para baixar a nossa arma secreta.

composer require appzcoder/crud-generator

Enquanto baixa, você pode fazer as seguintes alterações:

Abra o arquivo config/app.php e adicione estas linhas ao array providers:

Appzcoder\CrudGenerator\CrudGeneratorServiceProvider::class,
Collective\Html\HtmlServiceProvider::class,

O final do array ficará desta forma, com as duas linhas que adicionamos em destaque:

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

        Appzcoder\CrudGenerator\CrudGeneratorServiceProvider::class,
        Collective\Html\HtmlServiceProvider::class,

Agora altere o array aliases, adicionando estas duas linhas:

'Form'      => Collective\Html\FormFacade::class,
'HTML'      => Collective\Html\HtmlFacade::class,

O array vai ficar assim:

        'Validator' => Illuminate\Support\Facades\Validator::class,
        'View'      => Illuminate\Support\Facades\View::class,

        'Form'      => Collective\Html\FormFacade::class,
        'HTML'      => Collective\Html\HtmlFacade::class,

Também edite o arquivo .env, mudando os valores das variáveis DB_HOST, DB_DATABASE, DB_USERNAME, e DB_PASSWORD, com as credenciais de acesso ao seu banco de dados MySQL.

Feito isso, é bem provável que o Composer já tenha terminado de baixar os arquivos.

Caso tenha alguma dúvida sobre a configuração do CRUD Generator, veja as orientações no Github do projeto.

Criando o CRUD

Vamos usar este comando no terminal para criar nosso CRUD:

php artisan crud:generate Person --fields="name:string; email:string; gender:char; birthdate:date" --route=yes --pk=id

Usamos os mesmos campos que utilizamos no artigo anterior e chamamos a entidade de Person, em vez de User.

Você deverá ver a seguinte saída:

Controller created successfully.
Model created successfully.
Migration created successfully.
View created successfully.
Crud/Resource route added to .../cadastro/app/Http/routes.php

Ótimo!

Agora só falta criar a tabela no banco. Pra isso, é só executar este comando:

php artisan migrate

Você verá uma saída parecida com esta:

Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2015_11_27_124058_create_people_table

Esse era o segundo comando que comentei.

Tudo pronto! Agora vem a parte legal: testar!

Já pode olhar pro relógio e ver quanto tempo levou!

Testando o Sistema de Cadastro

Para testar, primeiro vamos iniciar o servidor.

O Laravel usa o Servidor Nativo do PHP. Para iniciá-lo, execute:

php artisan serve

Você verá o seguinte no terminal:

Laravel development server started on http://localhost:8000/

Agora é só acessar a URL http://localhost:8000/person e começar a se divertir!

Conclusão

Frameworks são muito úteis e agilizam bastante nosso trabalho.

Mas, como eu sempre insisto, não tente aprender um framework sem antes conhecer os Fundamentos da linguagem.

É uma coisa que eu falo bastante neste vídeo.

Como Aprender Laravel

Se você já conhece PHP o suficiente, pode ser uma boa hora pra começar a estudar um framework.

Eu uso e recomendo o Laravel. É um dos TOPs do Mercado hoje em dia.

O Curso de Laravel 5 da EspecializaTI tem tudo o que você precisa para aprender a usar essa maravilhosa ferramenta.

Você aprende desde o básico, como instalação e configuração, até recursos mais avançados, como ServiceProviders, Middlewares etc.

E o legal é que o curso ensina o Laravel 5, versão mais recente e estável.

Por isso evite cursos de Laravel 5.0 ou anterior. Aprenda e use o Laravel 5.1 ou posterior.

CLIQUE AQUI e Conheça o Curso Laravel 5 da EspecializaTI

 

Aprenda Ainda Mais

15 Dicas, Boas Práticas e Fundamentos do PHP

Conheça Dicas FUNDAMENTAIS para programar em PHP de forma Profissional

Não se considere Programador PHP sem antes ler este guia e adotar estas práticas!

Baixe gratuitamente este guia com 15 Dicas de PHP

Sobre Roberto Beraldo
Desenvolvedor Web desde 2007, com foco em PHP. Criador do Curso ULTIMATE PHP e autor do Blog do Beraldo (rberaldo.com.br), onde compartilha dicas sobre PHP e Programação em geral.
  • Bruce Pessoa

    Muito bom o tutorial. Mas o meu aparece page not found (Eu estou rodando do Homestead)

  • rodrigo oliveira

    Erro ao executar o localhost:8000/person
    ErrorException (E_ERROR)
    View [admin.sidebar] not found. (View: C:xampphtdocscadastro2resourcesviewspersonindex.blade.php)

    o caminho da view esta ok: C:xampphtdocscadastro2resourcesviewspersonindex.blade.php

    o que devo fazer?

  • rodrigo oliveira

    Primeira vez que uso, alguem poderia me ajudar com o erro na hora de executar o migrate?
    quando executo o “php artisan migrate” da o erro abaixo:

    IlluminateDatabaseQueryException : SQLSTATE[42S01]: Base table or view already exists: 1050 Table ‘users’ already exists (SQL: create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(255) not null, `email` varchar(255) not null, `password` varchar(255) not null, `remember_token` varchar(100) null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate utf8mb4_unicode_ci)

    at C:xampphtdocscadastrovendorlaravelframeworksrcIlluminateDatabaseConnection.php:664
    660| // If an exception occurs when attempting to run a query, we’ll format the error
    661| // message to include the bindings with SQL, which will make this exception a
    662| // lot more helpful to the developer instead of just the database’s errors.
    663| catch (Exception $e) {
    > 664| throw new QueryException(
    665| $query, $this->prepareBindings($bindings), $e
    666| );
    667| }
    668|

    • Olá.
      O erro diz que a table “users” já existe. Você deve ter criado uma migration com o mesmo nome de tabela. Verifique isso.
      Sugiro apagar todas as tabelas do banco e rodar as migrations novamente.

      • rodrigo oliveira

        Muito obrigado pela atenção, vou fazer da forma que você falou.

      • rodrigo oliveira

        A única coisa estranha é que logo na primeira vez que executei já deu o erro.

      • rodrigo oliveira

        criei outro projeto com nome de cadastro 2 para testar, segui os passos novamente e quando executei o “php artisan crud:generate Person –fields=”name:string; email:string; gender:char; birthdate:date” –route=yes –pk=id” ocorreu o seguinte erro:

        ErrorException : Undefined offset: 1

        at C:xampphtdocscadastro2vendorappzcodercrud-generatorsrcCommandsCrudCommand.php:107
        103| $fillableArray[] = $spareParts[0];
        104| $modifier = !empty($spareParts[2]) ? $spareParts[2] : ‘nullable’;
        105|
        106| // Process migration fields
        > 107| $migrationFields .= $spareParts[0] . ‘#’ . $spareParts[1];
        108| $migrationFields .= ‘#’ . $modifier;
        109| $migrationFields .= ‘;’;
        110| }
        111|

        Exception trace:

        1 IlluminateFoundationBootstrapHandleExceptions::handleError(“Undefined offset: 1”, “C:xampphtdocscadastro2vendorappzcodercrud-generatorsrcCommandsCrudCommand.php”)
        C:xampphtdocscadastro2vendorappzcodercrud-generatorsrcCommandsCrudCommand.php:107

        2 AppzcoderCrudGeneratorCommandsCrudCommand::handle()
        C:xampphtdocscadastro2vendorlaravelframeworksrcIlluminateContainerBoundMethod.php:29

        Please use the argument -v to see more details.

  • Rogério Pereira de Menezes

    Ainda não tentei, comecei a poucas semanas com Laravel, mas será que é fácil integrar esse crud com o AdmLTE?

  • Vinicius Machado Queiroz

    ALGUEM PODERIA AJUDAR? View [admin.sidebar] not found.

    • Humberto Morais da Silva

      Amigo, faz um vendor:publish no terminal ou cmd como esse:

      php artisan vendor:publish –provider=”AppzcoderCrudGeneratorCrudGeneratorServiceProvider”

      que vai funcionar.

  • Olha esse post deve ser atualizado, isso ai não funciona atualmente, onde fica localizado o arquivo .env, depois ao rodar o comando php artisan CRUD generator… tb nao funcionou…

  • Elton Costa

    Sintaxe correta:
    php artisan crud:generate Person –fields=”name#string; email#string; gender#char; birthdate#date” –route=yes –pk=id

    • Obrigado pela correção. Já alterei o código no post. Abraço

  • ribafs

    Rapaz, uma beleza.
    Já havia procurado por ferramentas que gerassem crud no Laravel, mas sem sucesso e agora funcionou beleza.
    Muito obrigado.

  • TheoKed

    Bom dia Roberto, tudo certo!
    Estou iniciando e gostei desse post, porém estou com problemas, pode me ajudar?
    No script para baixar o CRUD Generator esta dando o seguinte erro:

    C:cadastro>composer require appzcoder/crud-generator
    Using version ^2.0 for appzcoder/crud-generator
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Nothing to install or update
    Generating optimized autoload files
    > IlluminateFoundationComposerScripts::postUpdate
    > php artisan optimize

    [SymfonyComponentDebugExceptionFatalErrorException]
    Class ‘CollectiveHtmlHtmlServiceProvider’ not found

    PHP Fatal error: Class ‘CollectiveHtmlHtmlServiceProvider’ not found in C:cadastrovendorlaravelframeworksrcIlluminateFoundationProviderRepository.php on line 208
    Script php artisan optimize handling the post-update-cmd event returned with error code 255

    Installation failed, reverting ./composer.json to its original content.

    • Segundo a mensagem “Nothing to install or update”, você já possui o pacote appzcoder/crud-generator instalado. O problema foi no comando optimze. Provavelmente seu projeto está sem o arquivo da classe CollectiveHtmlHtmlServiceProvider

  • Maruan Bredoff

    Alguem poderia me ajudar? eu fiz tudo certo mas na hora que vou colocar localhost:8000/pessoa aparece a seguinte mensagem de erro
    ErrorException in FileViewFinder.php line 137: View [admin.sidebar] not found. (View: /var/www/crud/resources/views/pessoa/index.blade.php)

    • Olá. O erro diz que a view admin.sidebar não existe. Verifique o caminho e o nome da view

      • Maruan Bredoff

        Mas isso foi o que o comando crud generate criou.

        @extends(‘layouts.app’)

        @section(‘content’)

        @include(‘admin.sidebar’)

        Pessoa

        Rotas
        Route::get(‘/’, function () {
        return view(‘welcome’);
        });

        Route::resource(‘pessoa’, ‘PessoaController’);

  • Guilherme Gielow

    Agora o problema é o layout ErrorException in FileViewFinder.php line 137:
    View [layouts.app] not found. (View: C:UsersGuilhermeerpwebresourcesviewsbancoindex.blade.php)

  • Bruno Henrique

    Amigo, boa tarde!

    Realizei o procedimento segundo o seu post, mas na hora de realizar a inserção, ele não consegue, pois não encontra o banco de dados. Tem como ajudar ?

    • Olá. Qual é o erro que aparece? Já verificou se o banco de dados está ligado e se as credenciais estão corretas?

      • Bruno Henrique

        Bom dia! Bom, mensagem de erro não aparece e as credenciais estão todas corretas como mostra ai no cod, mas tenho pra mim que a função pg_connect não está recebendo as credenciais definidas no outro arquivo e por isso não conecta no banco…

        • Mas se fosse isso, seria gerado algum erro.
          Verifique se o debug está habilitado em config/app.php. Veja mais detalhes sobre as configurações aqui: https://laravel.com/docs/5.1/errors

          Verifique também se o seu PHP está com display_errors ativado e error_reporting em E_ALL

          • Bruno Henrique

            Tudo bem, vou verificar e qualquer coisa entro em contato novamente. Obrigado!

  • Jackson Lemos Moreira

    Olá Beraldo, tudo bem?
    Mostra essa mensagem abaixo quando tento criar o crud:generate, justamente a classe que nós adicionamos, o sistema não estão encontrando.
    [SymfonyComponentDebugExceptionFatalErrorException]
    Class ‘CollectiveHtmlHtmlServiceProvider’ not found
    Tem ideia do que pode ser?
    Obrigado!

    • No Laravel 5, a facade HTML que era nativa no Laravel 4 foi retirada e é um pacote externo. Tente instalá-lo seguindo as orientações deste post: http://stackoverflow.com/a/29124628

      • Jackson Lemos Moreira

        Entendi. Fiz conforme orientações, mas não concluiu a operação dando agora essa mensagem
        Controller created successfully.
        Model created successfully.
        [ErrorException]
        Undefined offset: 1

      • Laiali Safa

        oii, eu instalei o pacote e apareceu esse erro

        PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in C:laragonwwwMakebookvendorlaravelframeworksrcIlluminateContainerContainer.php on line 621

        Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in C:laragonwwwMakebookvendorlaravelframeworksrcIlluminateContainerContainer.php on line 621

  • Greicy Santos

    Está dando erro na hora de rodar o comando para criar o CRUD, dá ErrorException Undefined offset: 1

  • Pingback: Sistema de Cadastro com PHP e MySQL Usando PDO()