por Vincy . Modificado pela última vez em 27 de julho de 2021.
Laravel é um dos frameworks PHP populares para construção de sites dinâmicos. Ele usa arquitetura MVC.
Existem vários motivos para escolher o Laravel entre a lista de frameworks PHP disponíveis. Uma delas é sua simplicidade e iniciantes podem aprender rapidamente.
Não se preocupe se você for novo no Laravel. Este artigo irá guiá-lo sobre como começar a usar o Laravel com um projeto de exemplo simples.
Este exemplo é para guiar como criar, ler, atualizar e deletar ações com um banco de dados.
Podemos separar este artigo em duas seções.
Criando um ambiente de desenvolvimento para rodar um exemplo de PHP Laravel com banco de dados. Criação de exemplo do Laravel para criar, ler, atualizar e deletar registros do banco de dados.
O Laravel tem uma maior participação no mercado entre outros frameworks PHP . Além disso, fornece pacotes para a construção de sites.
Pré-requisito
Esta seção diz ao TODO para preparar o desenvolvimento para rodar um aplicativo PHP Laravel.
Certifique-se de ter um ecossistema PHP em seu computador. Instale PHP e MySQL ou MariaDB mais recentes com um servidor web como o Apache.
Se você ainda não tinha PHP em seu computador, a preferência é usar qualquer uma das pilhas como WAMP, LAMP. Usei pacote XAMPP para instalar o PHP .
Este exemplo usa Laravel 8, a última versão lançada em setembro de 2020. Este artigo descreve como criar um aplicativo PHP Laravel na raiz do servidor via Composer.
Parte 1: Criando um ambiente de desenvolvimento para executar um exemplo PHP Laravel com banco de dados.
Estas são as etapas para criar o ambiente de desenvolvimento para executar um projeto PHP Laravel.
Criando arquivos de aplicativo Laravel Criar banco de dados e esquema Configurar ambiente de aplicativo Laravel Migrar esquema para o banco de dados Iniciar o desenvolvimento server
Etapa 1: Criando arquivos do aplicativo Laravel
Execute o seguinte comando na janela do seu terminal. Ele cria um aplicativo PHP Laravel no caminho raiz de desenvolvimento
composer create-project laravel/laravel php-laravel-project-crud
Ele cria o projeto Laravel php-laravel-project-crud na estrutura MVC.
Etapa 2: Criar banco de dados e esquema
Crie um banco de dados usando PhpMyAdmin ou quaisquer outros clientes que você geralmente usa. Este exemplo usa o banco de dados php-laravel-crud conforme configurado no app.env.
Temos que usar um comando de migração para preparar as classes de migração do banco de dados para as tabelas de destino. A sintaxe mostra este comando onde o
php artisan make: migration create_
Siga a convenção para nomear os nomes das etiquetas do projeto PHP Laravel.
Deve ser em letras minúsculas. Deve estar no plural do nome do modelo correspondente php artisan make: migration create_products_table
Ele criará uma classe de migração do PHP Laravel no banco de dados/caminho de migrações.
Ele incluiu a geração automática id e timestamp por padrão. Temos que modificá-lo para adicionar campos adicionais à tabela do banco de dados de produtos. Veja a modificação feita com a função Schema:: create.
2021_07_17_054329_create_products_table.php
Php use Illuminate \ Database \ Migrations \ Migration; use Illuminate \ Database \ Schema \ Blueprint; use Illuminate \ Support \ Facades \ Schema; class CreateProductsTable extends Migration {/** * Execute as migrações. * * @return void */public function up () {Schema:: create ('products', function (Blueprint $ table) {$ table-> id ();/* Adicionar campos adicionais */$ table-> text (‘title’);//título do produto $ table-> text (‘description’);//descrição $ table-> text (‘short_notes’);//notas curtas $ table-> decimal (‘price’, 10, 2);//preço $ table-> text (‘image’);//imagem do produto $ table-> text (‘slug’);//slug do produto $ table-> timestamps ();}); }/** * Reverta as migrações. * * @return void */public function down () {Schema:: dropIfExists (‘produtos’); }}
Etapa 3: Configurar o ambiente do aplicativo Laravel
Na raiz do projeto (por exemplo
São os arquivos de configuração do aplicativo para definir o nome do aplicativo, home-url e outros. Veja os detalhes do banco de dados configurados com o.env abaixo.
.env (Configuração do banco de dados)
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=php-laravel-crud DB_USERNAME=root DB_PASSWORD=
Etapa 5: Migrar o esquema para o banco de dados
Isso é para criar tabelas no banco de dados conforme definido. Este comando CLI criará tabelas correspondentes ao esquema de classes de migração definido.
php artisan migrate
Passo 5: Inicie o servidor de desenvolvimento
Assim, temos os arquivos e banco de dados do aplicativo Laravel. Portanto, as etapas iniciais foram concluídas com sucesso.
Agora, é hora de iniciar o servidor de desenvolvimento para executar o aplicativo PHP Laravel.
Este comando fará isso e retornará a URL para executar o aplicativo.
php artisan serve
Ao executar o URL retornado, ele tornará a página de boas-vindas uma página de destino padrão.
Estrutura do arquivo
Assim que o aplicativo Laravel for criado, ele tem a seguinte estrutura de arquivos. Ele mostra os arquivos do aplicativo na estrutura MVC.
O diretório do aplicativo inclui o modelo, o controlador, o kernel HTTP/Console e mais arquivos. O controlador realiza o roteamento e o Modelo é mais sobre a lógica de backend.
O controlador específico da rota retorna uma resposta HTTP na forma de visualizações da IU ou qualquer coisa.
Veremos como criar modelos e controladores de projetos PHP Laravel. Esses são para a entidade do produto tomada, por exemplo, para criar o crud do banco de dados para iniciantes.
Fluxo de solicitação
O diagrama a seguir mostra o ciclo de vida do fluxo de solicitação do projeto PHP Laravel. Ele mostra o ciclo de solicitação-resposta HTTP de uma aplicação Laravel. O Laravel usa HTTP ou kernels de console com base na solicitação.
Este diagrama de ciclo de vida mostra como o kernel se prepara para processar a solicitação. Ele carrega os provedores e define o middleware necessário para processar a solicitação.
Por exemplo, o RouteServiceProvider carrega todas as rotas criadas para o aplicativo. As rotas são mapeadas com um middleware correspondente para filtrar solicitações. Um middleware pode ser atribuído a várias rotas.
Parte 2: Criando um exemplo do Laravel para criar, ler, atualizar e deletar linhas do banco de dados
Demos uma olhada rápida na estrutura do PHP Laravel e no tratamento de solicitações. Vamos criar um exemplo simples para criar, ler, atualizar e deletar operações com um banco de dados.
Criando modelos e controladores PHP Laravel
Crie um modelo de projeto Laravel usando o comando PHP artisan make: model. Nomear o modelo tem a convenção para permitir palavras no singular começam com maiúsculas.
php artisan make: model Product
O comando acima criará a seguinte classe Model no diretório app/Model. Ele tem uma variedade de campos preenchíveis protegidos contra entradas de dados impróprios.
A IU do formulário de adição do produto mostrará a entrada para esses três campos para aceitar dados do usuário.
Php namespace App \ Models; use Illuminate \ Database \ Eloquent \ Factories \ HasFactory; use Illuminate \ Database \ Eloquent \ Model; classe Product extends Model {use HasFactory; protegido $ fillable=['título','short_notes','preço']; }
A criação do controlador de aplicativo PHP Laravel também tem a mesma convenção de nomenclatura. Mas, deve ser com o sufixo ‘Controlador’. Exemplo: ProductController.php. O comando PHP artisan para criar um controlador é,
php artisan make: controller ProductController
A classe do controlador inclui as seguintes funções para executar ações de leitura, armazenamento, atualização e exclusão. Cada função está associada aos métodos de solicitação e caminho da rota correspondentes.
O valor dentro colchetes {} no URI é o identificador exclusivo para buscar o registro.
php namespace App \ Http \ Controllers; use App \ Models \ Product; use Illuminate \ Http \ Request; class ProductController extends Controller {/** * Exibe uma lista do recurso. * * @return \ Illuminate \ Http \ Response */public function index () {$ products=Product:: all ();//busca todos os produtos da visualização de retorno do banco de dados ('product.list', ['products'=> $ products]); }/** * Mostra o formulário de criação de um novo recurso. * * @return \ Illuminate \ Http \ Response */public function create () {return view (‘product.add’); }/** * Armazena um recurso recém-criado no armazenamento. * * @param \ Illuminate \ Http \ Request $ request * @return \ Illuminate \ Http \ Response */armazenamento de função pública (Request $ request) {$ newPost=Product:: create ([‘title’=> $ request-> título,’short_notes’=> $ pedido-> short_notes,’preço’=> $ pedido-> preço]); return redirect (‘product/’. $ newPost-> id.’/edit’); }/** * Exibe o recurso especificado. * * @param \ App \ Models \ Product $ product * @return \ Illuminate \ Http \ Response */public function show (Product $ product) {//}/** * Mostra o formulário para editar o recurso especificado. * * @param \ App \ Models \ Product $ product * @return \ Illuminate \ Http \ Response */função pública editar (Produto $ product) {return view (‘product.edit’, [‘product’=> $ product, ]); }/** * Atualizar o recurso especificado no armazenamento. * * @param \ Illuminate \ Http \ Request $ request * @param \ App \ Models \ Product $ product * @return \ Illuminate \ Http \ Response */atualização de função pública (Request $ request, Product $ product) {$ product-> update ([‘title’=> $ request-> title,’short_notes’=> $ request-> short_notes,’price’=> $ request-> price]); return redirect (‘product/’. $ product-> id.’/edit’); }/** * Remove o recurso especificado do armazenamento. * * @param \ App \ Models \ Product $ product * @return \ Illuminate \ Http \ Response */public function destroy (Product $ product) {$ product-> delete (); retorno de redirecionamento (‘produto/’); }}
Construindo layouts e visualizações
Esta é a página de boas-vindas redesenhada. Este exemplo usa o Laravel app.layout para todas as páginas.
O template filho da página de boas-vindas é welcome.blade.php. E o HTML é mostrado abaixo. Ele vincula a página de visualização do modelo da lista de produtos.
Todos os arquivos de modelo neste exemplo usam instruções da lâmina do Laravel {{}}. Ele aplica PHP htmlspecialchars () no valor a ser impresso. Ajuda a evitar o ataque XSS.
resources/views/welcome.blade.php
@extends (‘layouts.app’) @section (‘content’)
Projeto PHP Laravel-CRUD
Bem-vindo à demonstração do projeto PHP Laravel para iniciantes
@endsection
Ele estende o layout pai no início. Ele inclui o HTML do conteúdo filho dentro do invólucro @ section-@ ensection.
A página de boas-vindas usa o app.layout padrão. Este layout vem com o diretório resources/view do PHP Laravel. Também podemos criar layouts e modelos adicionais.
Lista de produtos
Os usuários chegarão a esta página a partir da navegação da página de boas-vindas. O link de navegação mapeia a rota atribuída à página da lista de produtos.
A página da lista tem todos os controles para executar as ações de criação, edição e exclusão do produto. Ele exibe três colunas do banco de dados do produto.
Ele passa a ação exclusiva para manipular o banco de dados de um produto específico.
O link do botão Excluir mostrará uma caixa de diálogo de confirmação. Ele posta a solicitação de exclusão com o identificador apropriado assim que o usuário confirma.
A visualização do modelo para exibir a lista dinâmica de produtos é mostrada abaixo. Ele usa a instrução loop do PHP Laravel para iterar o array do produto.
resources/views/product/list.blade.php
@extends (‘layouts.app’) @section (‘content’)
Projeto PHP Laravel-CRUD
Título do produto | Preço (USD) | Notas breves | Ação |
---|---|---|---|
{!! $ product-> title !!} | {!! $ product-> preço !!} | {!! $ product-> short_notes !!} | id !!})’> Excluir |
Nenhum produto encontrado |
@endsection
Adicionar ou editar modelo de produto
Os modelos de adição e edição têm o mesmo HTML. A tela de edição preenche os detalhes do produto.
O formulário de adição e edição obtém a entrada para os campos do produto Título, Notas breves e Preço. Esses são adicionados como campos preenchíveis no modelo de aplicativo PHP Laravel.
resources/views/product/list.blade.php
@extends (‘layouts.app’) @section (‘content’)