- PHP 8.2+ | Apache 2.4+ | phpMyAdmin 5.2+ ( Laragon )
- Composer Download
- Node.js 20 ou superior Download
- GIT Download
- VS Code Download
Acesse ou crie uma pasta de sua preferencia, abra o terminal (cmd) nessa pasta e execute os comando para criar o projeto
mkdir meu-projeto && cd meu-projeto
Criar o projeto com o Laravel
composer create-project laravel/laravel .
Configurar as variavéis essenciais do arquivo .env
APP_NAME=Curso-Laravel
APP_TIMEZONE=America/Fortaleza
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=curso-laravel
DB_USERNAME=root
DB_PASSWORD=
Criar banco de dados e as tabelas
php artisan migrate
Inciar o projeto criado com Laravel
php artisan serve
Acessar o conteúdo padra do Laravel
http://127.0.0.1:8000
Criar a pasta do Projeto e abra dentro do VSCode
git clone --branch dev-master https://github.com/fernandofmesquita/Curso-Laravel11-Celke.git .
Duplicar o arquivo ".env.exemplo" e renomear para ".env" e realizar as alterações.
Para utilizar o serviço de recuperação de senha, deve-se configurar o serviço de email. Para teste faça o cadastro do site Mailtrap.io
Pegar as credenciais da conta para o Laravel e realizar alterações no .env
EXEMPLO
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=********5532b32
MAIL_PASSWORD=********ea1f
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="sac@cursolaravel.com"
MAIL_FROM_NAME="${APP_NAME}"
Insatalar as dependências do PHP
composer install
Insatalar as dependências node.JS
npm install
Gerar a chave
php artisan key:generate
Criar tabelas no Banco de Dados
php artisan migrate
Executar as Seed
php artisan db:seed
Inciar o Projeto criado com Laravel
php artisan serve
Executar as dependencias Node.JS
npm rum dev
Instalar
composer require owen-it/laravel-auditing
Criar arquivo de Config
php artisan vendor:publish --provider "OwenIt\Auditing\AuditingServiceProvider" --tag="config"
Criar migration da Tabela audits
php artisan vendor:publish --provider "OwenIt\Auditing\AuditingServiceProvider" --tag="migrations"
Executar o Migrate
php artisan migrate
Utilize a seguinte configuração nas Models
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use OwenIt\Auditing\Contracts\Auditable;
class User extends Model implements Auditable
{
use \OwenIt\Auditing\Auditable;
// ...
}
Limpar cache de configuração (Somente se não funcionar)
php artisan config:clear
Associar usuários a papéis e permissões. Instalação em Laravel
Você pode instalar o pacote via composer :
composer require spatie/laravel-permission
Você deve publicar a migração e o config/permission.php
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
Limpe seu cache de configuração . Este pacote requer acesso às permissionconfigurações para executar migrações. Se você estiver armazenando configurações em cache localmente, limpe o cache de configuração com um destes comandos:
php artisan config:clear
Execute as migrações : após a configuração e a migração terem sido publicadas e configuradas, você pode criar as tabelas para este pacote executando:
php artisan migrate
Adicione a característica necessária na Model User
use HasRoles;
-
roles – Esta tabela armazenará o nome de todos os Papeis. EX: Super Admin, Admin, Professor, Aluno...
-
permissions – Esta tabela armazenará o nome de todas as permissões do aplicativo. Ex: 'index-course', 'show-course', 'create-course', 'edit-course', 'destroy-course'...
-
role_has_permissions – Esta tabela armazenará todas as permissões atribuídas a cada Papel. Ex: Papel 'Professor' tem Permissão a 'create-course'
-
model_has_roles – Esta tabela armazenará Papéis atribuídos a cada usuário da Model User. Ex: Papel 'Professor' está atribuido ao Model User 'user_id = 1'
-
model_has_permissions – Esta tabela armazenará as permissões atribuídas a cada modelo. Por exemplo, um modelo de usuário.
Exemplo de Criação da Seed
if (!User::where('email', 'admin@admin.com')->first()){
$admin = User::create([
'name' => 'Admin',
'email' => 'admin@admin.com',
'password' => Hash::make('123456', ['rounds' => 12])
]);
// Atribuir papel para o usuário
$admin->assignRole('Admin');
}
Criar a Seed
php artisan make:seeder PermissionSeeder
Exemplo de Criação da Seed
$permissions = [
'index-course',
'show-course',
'create-course',
'edit-course',
'destroy-course',
];
foreach($permissions as $permission){
$existingPermission = Permission::where('name', $permission)->first();
if(!$existingPermission){
Permission::create([
'name' => $permission,
'guard_name' => 'web',
]);
}
}
Criar a Seed
php artisan make:seeder RoleSeeder
Exemplo de Criação da Seed
// Verifica se existe e senão existir, cadastra na tabela Roles o nome do papel
if(!Role::where('name', 'Admin')->first()){
$admin = Role::create([
'name' => 'Admin',
]);
// Dar permissão para o papel e salva o relacionamento na tabela role_has_permissions
$admin->givePermissionTo([
'index-course',
'show-course',
'create-course',
'edit-course',
'destroy-course',
]);
}
->withMiddleware(function (Middleware $middleware) {
$middleware->redirectGuestsTo('/');
$middleware->alias([
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class,
]);
})
Se você deseja que uma função "Super Admin" responda a todas as permissões, sem precisar atribuir todas essas permissões a uma Papel, você pode usar o método do LaravelGate::before() . Por exemplo:
app\Providers\AppServiceProvider.php
use Illuminate\Support\Facades\Gate;
// ...
public function boot()
{
// Implicitly grant "Super Admin" role all permissions
// This works in the app by using gate-related functions like auth()->user->can() and @can()
Gate::before(function ($user, $ability) {
return $user->hasRole('Super Admin') ? true : null;
});
}
Utilizando a Tradução Módulo de linguagem pt-BR (português brasileiro) para Laravel.
Scaffold do diretório lang
php artisan lang:publish
Instale o pacote
composer require lucascudo/laravel-pt-br-localization --dev
Publique as traduções
php artisan vendor:publish --tag=laravel-pt-br-localization
Configure o Framework para utilizar 'pt_BR' como linguagem padrão
// Altere Linha 85 do arquivo config/app.php para:
'locale' => 'pt_BR'
// Para versões 11.x altere a linha 8 do arquivo .env
APP_LOCALE=pt_BR
Limpar cache de configuração (Somente se não funcionar)
php artisan config:clear
Instala dependencias Node.JS
npm install
Instala o bootstrap e popper
npm i --save bootstrap @popperjs/core
Executar as dependencias Node.JS
npm rum dev
Icones Font Awesome
Instalar a Biblioteca de Icones Free
npm i --save @fortawesome/fontawesome-free
Biblioteca JavaScript jQuery
Instalar a Biblioteca de Icones Free
npm install jquery
No arquivo resources\js\bootstrap.js inclua:
import jQuery from 'jquery';
window.$ = jQuery;
window.jQuery = jQuery;
No arquivo vite.config.js inclua:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
],
resolve: {
alias: {
'$': 'jquery',
},
},
});
SweetAlert 2 Download
Instalar
npm install sweetalert2
No arquivo resources\js\bootstrap.js inclua:
import Swal from 'sweetalert2';
window.Swal = Swal;
Alerta para o Botão Excluir
Crie um arquivo com esse codigo e inclua no resources\js\app.js:
// Receber o seletor apagar e percorrer e lista de registro
document.querySelectorAll('.btnDelete').forEach(function (button) {
// Aguardar o clique do usuário no botão apagar
button.addEventListener('click', function (event) {
// Bloquear o recarregamento da página
event.preventDefault();
// Receber o atributo que possui o id do registro que deve ser excluído
var deleteId = this.getAttribute('data-delete-id');
// SweetAlert
Swal.fire({
title: 'Tem certeza?',
text: 'Você não poderá reverter isso!',
icon: 'warning',
showCancelButton: true,
cancelButtonColor: '#0d6efd',
cancelButtonText: 'Cancelar',
confirmButtonColor: '#dc3545',
confirmButtonText: 'Sim, excluir!',
}).then((result) => {
// Carregar a página responsável em excluír se o usuário confirmar a exclusão
if (result.isConfirmed) {
document.getElementById(`formExcluir${deleteId}`).submit();
}
});
});
});
Na blade siga o exemplo
@can('destroy-cliente')
<form id="formExcluir{{ $cliente->id }}"
action="{{ route('clientes.destroy', ['cliente' => $cliente->id]) }}" method="POST">
@csrf
@method('delete')
<button type="button" class="btn btn-danger btn-sm me-1 mb-1 mb-md-0 btnDelete"
data-delete-id="{{ $cliente->id }}"><i class="fa-regular fa-trash-can"></i> Apagar</button>
</form>
@endcan
Para o componente de alerta
{{-- Mensagem de Sucesso ao cadastrar no DB --}}
@if (session()->has('success'))
<script>
document.addEventListener('DOMContentLoaded', () => {
Swal.fire('Pronto!', "{{ session('success') }}", 'success');
})
</script>
@endif
{{-- Mensagem de Erro ao cadastrar no DB --}}
@if (session()->has('error'))
<script>
document.addEventListener('DOMContentLoaded', () => {
Swal.fire('Erro!', "{{ session('error') }}", 'error');
})
</script>
@endif
Baixar arquivos do Git
git clone --branch <branch_name> <repository_url> .
Verificar em qual branch vc está
git branch
Baixar as Atualizações
git pull
php artisan make:migration create_<nome da tabela>_table
É aconcelhavel utilizar o nome da tabela em inglês e no plural pois o laravel utiliza a regra de pluralidade em suas regras
php artisan make:migration create_courses_table
Adicionar uma colulas em um tabela
php artisan make:migration alter_courses_add_price_table
Executar o Migration
php artisan migrate
Executar o Rollback, para desfazer o ultimo migrate
php artisan migrate:rollback
php artisan make:controller <nome da controller>Controller
Utilizar o nome da controller no singular. Nome da tabela no plural e nome da controller no singular.
php artisan make:controller CourseController
Ou já com os resource
php artisan make:controller CourseController --resource
php artisan make:view <nome da pasta>/<nome da view>
Utilize a Pasta com o Nome da Tabela do DB e crie todas as Views referente a essa tabela na mesma pasta. EX index, create, edit e show.
php artisan make:view courses/index
Utilize o nome da model sempre do singular referente a tabela do banco de dados e utilize o seguinte comando para criar a model
php artisan make:model Course
php artisan make:model Cliente -mcrs
-m, --migration Create a new migration file for the model. -c, --controller Create a new controller for the model. -r, --resource Indicates if the generated controller should be a resource controller -s, --seed Create a new seeder for the model
Utilize o nome da seed sempre do singular referente a tabela do banco de dados, juntamente com a palavra Seeder e utilize o seguinte comando para criar a seed
php artisan make:seeder CourseSeeder
Executar as Seed
php artisan db:seed
Criar um request para validar os dados preenchidos no formulário
php artisan make:request CourseRequest
Criar componente com as mensagens de alerta
php artisan make:component <nome> --view
php artisan make:component alert --view
Publicar os arquivos na pasta resources\views\vendor
php artisan vendor:publish --tag=laravel-mail