Imagem do artigo Como criar um blog no Laravel 12 para iniciantes (guia completo)

Artigo - Como criar um blog no Laravel 12 para iniciantes (guia completo)

05/11/2025

Como Criar um Blog do Zero com Laravel 12 [Guia Passo a Passo]


Se você quer aprender a criar um blog moderno, rápido e escalável usando o Laravel 12, este guia foi feito para você. Vamos passar por todas as etapas — desde a instalação do Laravel até a publicação do seu projeto — de forma prática e didática.


🧩 O que é o Laravel 12?

O Laravel 12 é a versão mais recente do framework PHP mais popular do mundo. Ele facilita o desenvolvimento web com recursos como:

  1. Roteamento simples e poderoso
  2. ORM Eloquent para lidar com banco de dados facilmente
  3. Autenticação e autorização integradas
  4. Blade, um sistema de templates elegante
  5. Artisan CLI, uma linha de comando que automatiza tarefas


⚙️ Requisitos para começar

Antes de iniciar, certifique-se de ter instalado:

  1. PHP 8.2 ou superior
  2. Composer
  3. MySQL ou MariaDB
  4. Node.js (para front-end e compilação de assets)
  5. Um editor de código (como VSCode)


🚀 Passo 1 — Criando o projeto Laravel 12

Abra o terminal e execute:

composer create-project laravel/laravel blog-laravel12


Depois, entre na pasta do projeto:

cd blog-laravel12
php artisan serve


Acesse http://localhost:8000 e você verá a página inicial do Laravel 12 funcionando!

🏗️ Passo 2 — Configurando o banco de dados

Edite o arquivo .env e configure seu banco:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=


Depois, crie o banco de dados no seu MySQL:

CREATE DATABASE blog;


🧱 Passo 3 — Criando o model e migration de posts

O blog precisa armazenar posts. Vamos criar a tabela:

php artisan make:model Post -m


Edite a migration gerada em database/migrations/xxxx_create_posts_table.php:

Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});


Agora rode as migrations:

php artisan migrate


Em models/Post.php, adicione os campos preenchiveis:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
protected $table = 'posts';
protected $fillable = ['title', 'content'];
}


✍️ Passo 4 — Criando o Controller e as rotas

Crie um controller para gerenciar os posts:

php artisan make:controller PostController --resource


Em routes/web.php, adicione:

use App\Http\Controllers\PostController;

Route::resource('posts', PostController::class);


Isso cria rotas automáticas para listar, criar, editar e deletar posts.

🧠 Passo 5 — Implementando as ações no Controller

Edite app/Http/Controllers/PostController.php:

<?php

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
public function index() {
$posts = Post::latest()->paginate(5);
return view('posts.index', compact('posts'));
}

public function create() {
return view('posts.create');
}

public function store(Request $request) {
$request->validate([
'title' => 'required|max:255',
'content' => 'required'
]);

Post::create($request->only('title', 'content'));
return redirect()->route('posts.index')->with('success', 'Post criado com sucesso!');
}

public function show(Post $post) {
return view('posts.show', compact('post'));
}

public function edit(Post $post) {
return view('posts.edit', compact('post'));
}

public function update(Request $request, Post $post) {
$post->update($request->only('title', 'content'));
return redirect()->route('posts.index')->with('success', 'Post atualizado!');
}

public function destroy(Post $post) {
$post->delete();
return redirect()->route('posts.index')->with('success', 'Post deletado!');
}
}


🎨 Passo 6 — Criando as views Blade

Crie a pasta resources/views/posts e os arquivos abaixo:

index.blade.php

Lista de posts:

@extends('layouts.app')

@section('content')
<h1>Posts</h1>
<a href="{{ route('posts.create') }}">Novo Post</a>
<ul>
@foreach ($posts as $post)
<li>
<a href="{{ route('posts.show', $post) }}">{{ $post->title }}</a>
</li>
@endforeach
</ul>
@endsection


create.blade.php

Formulário de criação:

@extends('layouts.app')

@section('content')
<h1>Novo Post</h1>
<form method="POST" action="{{ route('posts.store') }}">
@csrf
<input type="text" name="title" placeholder="Título">
<textarea name="content" placeholder="Conteúdo"></textarea>
<button type="submit">Salvar</button>
</form>
@endsection

(Você pode criar as demais views — show.blade.php, edit.blade.php — com base nessas.)


💡 Passo 7 — Melhorando o layout com Blade

Crie um layout base em resources/views/layouts/app.blade.php:

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Blog Laravel 12</title>
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>


🚢 Passo 8 — Testando e rodando o blog

Execute o servidor novamente:

php artisan serve


Acesse http://localhost:8000/posts — pronto! 🎉

Você acabou de criar um blog funcional com Laravel 12.

🧭 Próximos passos

Agora que você tem o básico, pode evoluir o projeto adicionando:

  1. Sistema de autenticação com Laravel Breeze ou Jetstream
  2. Upload de imagens
  3. Editor de texto (como TinyMCE ou CKEditor)
  4. Categorias e tags
  5. Deploy no Laravel Forge, DigitalOcean ou Render


🔍 Conclusão

Criar um blog com Laravel 12 é uma excelente forma de aprender os fundamentos do framework e desenvolver aplicações escaláveis e profissionais.

Com poucos comandos e uma arquitetura elegante, o Laravel facilita muito o trabalho de quem quer evoluir como desenvolvedor PHP.


Ver todos os posts