21
INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 Brasil (1/21) MINICURSO LARAVEL 5.5 Gil Eduardo de Andrade Download: www.gileduardo.com.br/ifpr/laravel/minicurso_laravel.zip 1. BAIXANDO O COMPOSER Referência https://getcomposer.org/download/ Baixando o Composer No terminal, execute (copie e cole) os seguintes comandos: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75b f9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"

MINICURSO LARAVEL 5 - Gil Eduardo · php composer-setup.php php -r "unlink('composer-setup.php');" INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto

  • Upload
    others

  • View
    29

  • Download
    0

Embed Size (px)

Citation preview

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (1/21)

MINICURSO LARAVEL 5.5 Gil Eduardo de Andrade

Download: www.gileduardo.com.br/ifpr/laravel/minicurso_laravel.zip

1. BAIXANDO O COMPOSER Referência https://getcomposer.org/download/ Baixando o Composer No terminal, execute (copie e cole) os seguintes comandos: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (2/21)

2. CRIANDO PROJETO VIA COMPOSER

No terminal (mesmo diretório onde baixou o Composer), execute (copie e cole) o seguinte comando: ./composer.phar create-project laravel/laravel minicurso 5.5 --prefer-dist

3. EXECUTANDO SERVIDOR LARAVEL E TESTANDO A APLICAÇÃO CRIADA No terminal (mesmo diretório onde baixou o Composer), execute (copie e cole) os seguintes comandos: cd minicurso php artisan serve

Agora abra o navegador digite a URL apresentada no terminal: 127.0.0.1:8000

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (3/21)

4. ENTENDENDO O CONCEITO DE ROTAS – BÁSICO Diretório – Arquivo router/web.php

5. ARQUIVOS DE VISUALIZAÇÃO – VIEWS Diretório resources/views Arquivo welcome.php

6. ADICIONANDO ARQUIVOS BOOTSTRAP Diretório public/css Adicionar os arquivos: bootstrap.min.css e theme.css Diretório public/js Adicionar os arquivos: bootstrap.min.js e jquery-3.3.1.slim.js

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (4/21)

7. TRABALHANDO COM BLADE – VIEW PRINCIPAL E MAIN

Criar o Diretório “img”: public/img Adicionar as imagens: curso_ico. pnp, cursop_ico. pnp , turma_ico. pnp e turmap_ico. pnp Copiar o Diretório: public/fonts Diretório resources/views Adicionar os arquivos: principal.blade.php e main.blade.php

8. ALTERNANDO A ROTA PRINCIPAL – PÁGINA MAIN Diretório router/web.php

9. CRIANDO AS CLASSES DE MODELO – ARTISAN Terminal Ctrl + c (aborta a execução do artisan serve) Terminal

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (5/21)

php artisan make:model Curso -m (cria a classe de modelo para cursos – com migration) Terminal php artisan make:model Turma -m (cria a classe de modelo para turmas – com migration)

Terminal php artisan make:model Nivel -m (cria a classe de modelo para nivel – com migration) Os arquivos para as classes de modelo foram criados no diretório “app/” Foram criadas, ainda, as migrations no diretório “database/migrations”

10. CONFIGURANDO A CONEXÃO COM O BANCO DE DADOS Diretório (principal) / Editar o arquivo: .env Modificar os dados de autenticação para o seu banco de dados. Veja o exemplo a seguir:

Você precisa alterar, com os dados de conexão com a sua base de dados, os campos DB_DATABASE, BD_USERNAME e DB_PASSWORD.

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (6/21)

11. DEFININDO OS CAMPOS DAS TABELAS – MIGRATION Diretório /database/migrations Editar o arquivo: 2018_12_07_165432_create_cursos_table.php

Editar o arquivo: 2018_12_07_165907_create_turmas_table.php

Editar o arquivo: 2018_12_07_172321_create_nivels_table.php

12.CRIANDO AS TABELAS NO BD MYSQL – VIA MIGRATON Terminal php artisan migrate (cria as tabelas para curso, turma e nível)

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (7/21)

13. POVOANDO A TABELA NÍVEL VIA SEEDER Diretório database/seeds Editar/Adicionar ao arquivo: DatabaseSeeder.php DB::insert('INSERT INTO nivels(nome, abreviatura) VALUES(?, ?)', array('Técnico - Médio Integrado', 'Médio'));

DB::insert('INSERT INTO nivels(nome, abreviatura) VALUES(?, ?)', array('Tecnólogo - Graduação', 'Superior')); DB::insert('INSERT INTO nivels(nome, abreviatura) VALUES(?, ?)', array('Licenciatura - Graduação', 'Superior')); DB::insert('INSERT INTO nivels(nome, abreviatura) VALUES(?, ?)', array('Bacharel - Graduação', 'Superior')); DB::insert('INSERT INTO nivels(nome, abreviatura) VALUES(?, ?)', array('Pós-Graduação', 'Especialização'));

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (8/21)

DB::insert('INSERT INTO nivels(nome, abreviatura) VALUES(?, ?)', array('Pós-Graduação', 'Mestrado')); DB::insert('INSERT INTO nivels(nome, abreviatura) VALUES(?, ?)', array('Pós-Graduação', 'Doutorado')); Terminal php artisan db:seed (insere os dados na tabela de nível)

14. CRIANDO A CLASSE DE CONTROLE DOS CURSOS Terminal php artisan make:controller CursoController (criado em “app/Http/Controllers”)

Diretório app/Http/Controllers Alterar/Adicionar ao arquivo: CursoController.php use Request; (alterar) use App\Curso; (adicionar) use App\Turma; (adicionar) use App\Nivel; (adicionar) public function listar() { } (adicionar)

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (9/21)

public function cadastrar() { } (adicionar) public function editar() { } (adicionar) public function salvar($id) { } (adicionar) public function remover($id) { } (adicionar) public function confirmar($id) { } (adicionar)

15. CRIANDO AS ROTAS PARA O CRUD DOS CURSOS Diretório routes/ Adicionar ao arquivo: web.php Route::get('/curso', 'CursoController@listar'); Route::get('/curso/cadastrar', 'CursoController@cadastrar'); Route::get('/curso/editar/{id}', 'CursoController@editar'); Route::post('/curso/salvar/{id}', 'CursoController@salvar'); Route::get('/curso/remover/{id}', 'CursoController@remover'); Route::get('/curso/confirmar/{id}', 'CursoController@confirmar');

16. CLASSE CONTROLE DE CURSOS → MÉTODO LISTAR Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: listar() $cursos = Curso::all(); $niveis = Nivel::select('id', 'abreviatura')->get(); return view('curso')->with('cursos', $cursos)->with('niveis', $niveis);

17.VIEW CURSOS Diretório resources/views Adicionar o arquivo: curso.blade.php

18. TESTANDO A VIEW CURSOS → LISTAR

Diretório resources/views Alterar o arquivo: main.blade.php Criando o link

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (10/21)

De: <a href=" "> Para: <a href="/curso"> Terminal php artisan serve (iniciando aplicação novamente)

19. CLASSE CONTROLE DE CURSOS → MÉTODO CADASTRAR Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: cadastrar() $niveis = NivelModel::orderBy('id')->get(); return view('cursoCadastrar')->with('niveis', $niveis);

20.CLASSE CONTROLE DE CURSOS → MÉTODO SALVAR (Primeira Parte) Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: salvar($lid) // INSERT if($id == 0) { $objCurso = new Curso(); $objCurso->nome = mb_strtoupper(Request::input('nome'), 'UTF-8'); $objCurso->abreviatura = mb_strtoupper(Request::input('abreviatura'),

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (11/21)

'UTF-8'); // Obtém Id Nivel $arr = explode(" ", Request::input('nivel')); $objCurso->id_nivel = $arr[0]; // Fim $objCurso->tempo = Request::input('tempo');; $objCurso->ativo = 1; $objCurso->save(); } return redirect()->action('CursoController@listar')->withInput();

21.VIEW CADASTRO DE CURSOS

Diretório resources/views Adicionar o arquivo: cursoCadastar.blade.php

22. TESTANDO CADASTRO DE CURSOS (Na tela de listagem de cursos → Botão “Cadastrar”)

(Na tela de cadastro de cursos → Preencher campos -> Botão “Salvar”)

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (12/21)

23. CLASSE CONTROLE DE CURSOS → MÉTODO EDITAR Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: editar($id) // Filtra parâmetro para garantir que é um número if(is_numeric($id)) { $curso = CursoModel::find($id); // Verifica se existe um curso com o 'id' recebido por parâmetro if(empty($curso)) { $msg = "Curso não encontrado para o id=".$id."!"; return view('messagebox')->with('tipo', 'alert alert-warning')

->with('titulo', 'OPERAÇÃO INVÁLIDA') ->with('msg', $msg) ->with('acao', "/curso"); } $niveis = NivelModel::orderBy('id')->get(); return view('cursoEditar')->with('curso', $curso)->with('niveis', $niveis); }

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (13/21)

else { $msg = "Parâmetro via URL Inválido!"; return view('messagebox')->with('tipo', 'alert alert-warning')

->with('titulo', 'OPERAÇÃO INVÁLIDA') ->with('msg', $msg) ->with('acao', "/curso"); }

24. CLASSE CONTROLE DE CURSOS → MÉTODO SALVAR (Segunda Parte) Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: salvar($id) // UPDATE else { $objCurso = Curso::find($id); // Verifica se existe um curso com o 'id' recebido por parâmetro if(empty($objCurso)) { $msg = "Curso não encontrado para o id=".$id."!"; return view('messagebox')->with('tipo', 'alert alert-warning')

->with('titulo', 'OPERAÇÃO INVÁLIDA') ->with('msg', $msg) ->with('acao', "/curso"); } $objCurso->nome = mb_strtoupper(Request::input('nome'), 'UTF-8'); $objCurso->abreviatura = mb_strtoupper(Request::input('abreviatura'), 'UTF-8'); // Obtém Id Nivel $arr = explode(" ", Request::input('nivel')); $objCurso->id_nivel = $arr[0]; // Fim $objCurso->tempo = Request::input('tempo'); // Obtém Ativo/Inativo $ativo = Request::input('ativo');

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (14/21)

if (strcmp($ativo, "ATIVO") == 0) { $objCurso->ativo = 1; } else { $objCurso->ativo = 0; } $objCurso->save();

}

25.VIEW ALTERAÇÃO DE CURSOS + VIEW MENSAGEM Diretório resources/views Adicionar os arquivos: cursoEditar.blade.php e messagebox.blade.php

26. TESTANDO ALTERAÇÃO DE CURSOS

(Na tela de listagem de cursos → Botão “Alterar”)

(Na tela de alteração de cursos → Alterar campos -> Botão “Alterar”)

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (15/21)

27. CLASSE CONTROLE DE CURSOS → MÉTODO REMOVER Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: remover($id) if(is_numeric($id)) { $curso = Curso::find($id); if(empty($curso)) { $msg = "Curso não encontrado para o ID=".$id."!"; return view('messagebox')->with('tipo', 'alert alert-warning') ->with('titulo', 'OPERAÇÃO INVÁLIDA') ->with('msg', $msg) ->with('acao', "/curso"); } $total_turmas = Turma::where('id_curso', $id)->count(); if($total_turmas == 0) { return view('cursoRemover')->with("curso", $curso); } else {

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (16/21)

$msg = "Existem turmas vinculadas ao curso '$curso->nome' que impedem sua exclusão!";

return view('messagebox')->with('tipo', 'alert alert-danger') ->with('titulo', 'OPERAÇÃO INVÁLIDA') ->with('msg', $msg) ->with('acao', "/curso"); }

} $msg = "Parâmetro via URL Inválido!"; return view('messagebox')->with('tipo', 'alert alert-warning')

->with('titulo', 'OPERAÇÃO INVÁLIDA') ->with('msg', $msg) ->with('acao', "/curso");

28. CLASSE CONTROLE DE CURSOS → MÉTODO CONFIRMAR Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: confirmar($id) $objCurso = Curso::find($id); if(empty($objCurso)) { $msg = "Curso não encontrado para o ID=".$id."!"; return view('messagebox')->with('tipo', 'alert alert-warning') ->with('titulo', 'OPERAÇÃO INVÁLIDA') ->with('msg', $msg) ->with('acao', "/curso"); } $objCurso->delete();

29.VIEW REMOÇÃO DE CURSOS Diretório resources/views Adicionar o arquivo: cursoRemover.blade.php

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (17/21)

30. TESTANDO REMOÇÃO DE CURSOS

(Na tela de listagem de cursos → Botão “Remover”)

(Na tela de remoção de cursos → Botão “Sim”)

31. CRIANDO A CLASSE DE CONTROLE DAS TURMAS Terminal Ctrl + c (aborta a execução do artisan serve) Terminal php artisan make:controller TurmaController (criado em

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (18/21)

“app/Http/Controllers”)

Diretório app/Http/Controllers Alterar/Adicionar ao arquivo: TurmaController.php use Request; (alterar) use App\Turma; (adicionar) use App\Curso; (adicionar) public function listar() { } (adicionar) public function cadastrar() { } (adicionar) public function editar() { } (adicionar) public function salvar($id) { } (adicionar) public function remover($id) { } (adicionar) public function confirmar($id) { } (adicionar)

32.CRIANDO AS ROTAS PARA O CRUD DAS TURMAS Diretório routes/ Adicionar ao arquivo: web.php Route::get('/turma', 'TurmaController@listar'); Route::get('/turma/cadastrar', 'TurmaController@cadastrar'); Route::get('/turma/editar/{id}', 'TurmaController@editar'); Route::post('/turma/salvar/{id}', 'TurmaController@salvar'); Route::get('/turma/remover/{id}', 'TurmaController@remover'); Route::get('/turma/confirmar/{id}', 'TurmaController@confirmar');

33. CLASSE CONTROLE DE TURMAS → MÉTODO LISTAR Diretório app/Http/Controllers Adicionar ao arquivo: CursoController.php – Método: listar()

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (19/21)

$turmas = Turma::orderBy('nome')->get(); $cursos = Curso::select('id', 'nome')->get(); return view('turma')->with('turmas', $turmas) ->with('cursos', $cursos);

34. VIEW TURMAS Diretório resources/views Adicionar o arquivo: turma.blade.php

35. TESTANDO A VIEW TURMAS → LISTAR Diretório resources/views Alterar o arquivo: main.blade.php Criando o link De: <a href=" "> Para: <a href="/turma"> Terminal php artisan serve (iniciando aplicação novamente)

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (20/21)

ATIVIDADE

(20 – 25 minutos)

1. Codificar todos os métodos da classe de “TurmaController”; 2. Utilizar as “Views” disponibilizadas e implementar as funcionalidades:

alterar e remover Turmas;

AUTENTICAÇÃO – BÁSICO

1. CRIANDO AS CLASSES E VIEWS DE AUTENTICAÇÃO Terminal php artisan make:auth

Diretório – Classes de Controle app/Http/Controllers/Auth

Diretório – Views resources/views/auth

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (21/21)

2. DIFININDO AS ROTAS QUE REQUEREM AUTENTICAÇÃO Diretório routes/ Editar o arquivo: web.php Route::group(['middleware' => 'auth'], function() { Route::get('/turma', 'TurmaController@listar'); Route::get('/turma/cadastrar', 'TurmaController@cadastrar'); Route::get('/turma/editar/{id}', 'TurmaController@editar'); Route::post('/turma/salvar/{id}', 'TurmaController@salvar'); Route::get('/turma/remover/{id}', 'TurmaController@remover'); Route::get('/turma/confirmar/{id}', 'TurmaController@confirmar'); });

3. TENTANDO ACESSAR O MENU TURMAS (Ao selecionar o ícone “Turmas” no Menu Principal)