Criação de um projeto Laravel Passo a Passo
instalacao do projeto usando o laravel jetstream
1 banco de dados mysql
db_system2
senha: mtEpsayePAwrX5Cz
Obs: padrao do banco de dados e preciso ser UTF8mb4_general_ci
2 baidxando projeto via composer
composer create-project laravel/laravel system2
3 instalando laravel jetstream
composer require laravel/jetstream
4 habilitando jetstream no sistema com tema escuro
php artisan jetstream:install inertia –ssr –dark
5 parametrizando o projeto no env
6 instalando pacote do npm
npm install
7 buildando projetos com gerenciador de pacotes npm
npm run build
8 criando tabelas e populando com o eloquente do laravel
php artisan migrate
Nesta parte e preciso ter conhecimento sobre a hospedagem e apontar o o dominio para pasta raiz do sistema e a
9 apos acessar o sistema vamos as configurações básicas começaremos pelo horario
1 acessar a pasta app/config/app.php
alterar a linha 73
de: ‘timezone’ => ‘UTC’,
para: ‘timezone’ => ‘America/Sao_Paulo’,
2 acessar tbm dentro da pasta config o arquivo jetstream.php
e descomentar as linhas 61 62 e 63
de:
'features' => [
// Features::termsAndPrivacyPolicy(),
// Features::profilePhotos(),
// Features::api(),
// Features::teams(['invitations' => true]),
Features::accountDeletion(),
],
para:
'features' => [
Features::termsAndPrivacyPolicy(),
Features::profilePhotos(),
Features::api(),
// Features::teams(['invitations' => true]),
Features::accountDeletion(),
],
estas alterações irão ativar algumas funções do jetstream para utilizarmos mais tarde com o permissionamento.
10 rodar o build e testar as alterações feitas
npm run build
11 proximo passo e parametrização de rotas para isso vamos criar um controler
php artisan make:controller Web/PageController
1 vamos trazer renderização das paginas para dentro do controlador e tirar a funçaõ das rotas
desta forma sera possivel criar cache das rotas e tornar o sistema ate 100X mais rapido
apos tirar as rederizações padroes, dashborad e welcome da rota web e preciso ajustar a rota api
2 para isso vamos criar um controller para exibir os usuarios
php artisan make:controller UserController --resource
Obs: anste de usar API e preciso ativar autenticação de cessão por crftoken no laravel sanctum, decomentando a linha "\Lravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,"
Next, if you plan to utilize Sanctum to authenticate a SPA, you should add Sanctum's middleware to your api middleware group within your application's app/Http/Kernel.php file:
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
3 e usar um recurso poderoso do laravel para retorno de informações da API pelo controller
php artisan make:resource UserResource
"resources"
3.1 dentro do resource basicamente ele recebera os dados enviados pelo controller e transforma e json para resposta
uma observação importante e que desta forma e facil organizar e parametrizar o retono da API como desejarmos
ex:
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'role_id' => $this->roles,
'roles' => $this->roles,
'created_at' => $this->created_at->toDateString(),
];
}
3.2 desta forma o retono da funcao do controler sera assim:
class UserController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
return UserResource::collection(User::all());
}
Testando as alterações e parametrizações de rotas.
Para realizar os teste vamos criar uma pagina com VueJS para receber as informações do controler por meio do resource.
Dentro da pasta resource/js/pages crie uma pasta de usuario sempre seguindo as regras de PSR-4 para organização do projeto, neste caso em ingles tbm ex: User
Dentro da pasta user vamos criar o index.vue
Passo importante
Para publicar as imagens de dentro do storage do projeto laravel e preciso utilizar o comando
php artisan storage:link
desta forma ele ira publicar o local onde as imagens são salvas