- Laravel CRUD - 9. März 2021
- Laravel Layout - 11. Februar 2021
- Laravel Datenbank - 29. Januar 2021
Praktisches Tutorial für eine Blog-App mit Laravel. Von der Controller-Erstellung bis zur Blade-View – inkl. Tipps zu Fehlerbehebung, Best Practices, Beispieldaten und weiterführenden Links.
Übersicht & Ziel
Dieses Tutorial zeigt, wie eine einfache Blog-App in Laravel entsteht. Es werden Controller, Routing und Views anhand eines kompakten End-to-End-Beispiels erläutert.
Voraussetzungen
- Laravel (ab Version 8.x)
- Composer und Artisan CLI
- Lokale Entwicklungsumgebung (Homestead, Valet, Laragon oder XAMPP)
Schritt 1: Controller erzeugen
Im Projektstamm folgenden Befehl ausführen:
php artisan make:controller IndexController
Das erzeugt die Datei:
app/Http/Controllers/IndexController.php
Beispiel-Code für den Controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class IndexController extends Controller
{
public function index()
{
// Beispiel: Leeres Array für Posts (später Model einbinden)
$posts = []; // oder: Post::all()
return view('index', compact('posts'));
}
}

Hinweis:
Mit compact('posts')
übergibst du die Variable an die View. Statt eines leeren Arrays kannst du später Eloquent nutzen.
Schritt 2: Route definieren
Öffne:
routes/web.php

Füge hinzu:
use App\Http\Controllers\IndexController;
Route::get('/', [IndexController::class, 'index'])->name('home');
- Mit
Route::get(…)
legst du eine Route für die Startseite an. - Über den zweiten Parameter
[Controller::class, 'action']
wird der Controller samt Methode übergeben. ->name('home')
gibt der Route einen Namen – nützlich fürs Routing und Verlinken in Templates.
Erläuterung ::class
:IndexController::class
löst den vollqualifizierten Namen der Klasse auf und ist sicherer als einfache Strings – gerade bei Refactorings.
Schritt 3: View (Blade) anlegen
Laravel nutzt standardmäßig Blade als Template-Engine.
Lege folgende Datei an:
resources/views/index.blade.php
Beispiel-View:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Blog — Start</title>
</head>
<body>
<h1>Willkommen im Blog</h1>
@if(count($posts))
<ul>
@foreach($posts as $post)
<li>{{ $post->title }}</li>
@endforeach
</ul>
@else
<p>Keine Beiträge vorhanden.</p>
@endif
</body>
</html>
- Mit
@if
,@foreach
usw. kannst du einfach Schleifen und Bedingungen darstellen. - Daten werden direkt aus dem Controller an die View übergeben.
Schritt 4: (Optional) Model und Migration
Für echte Blogs brauchst du eine Datenbank und ein Model. Erzeuge beides per Artisan:
php artisan make:model Post -m
- Das legt die Datei
app/Models/Post.php
und Migration unterdatabase/migrations/
an.
Migration anpassen:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->timestamps();
});
}
Migration anwenden:
php artisan migrate
Schritt 5: (Optional) Beispieldaten mit Seeder
Um den Blog zu testen:
php artisan make:seeder PostSeeder
Im Seeder z. B.:
public function run()
{
\App\Models\Post::factory()->count(3)->create();
}
Führe den Seeder aus:
php artisan db:seed --class=PostSeeder
So sieht es im Browser aus
Stelle sicher, dass die Startseite (/
) geladen wird.
Die Überschrift Willkommen im Blog erscheint. Falls Daten hinterlegt sind, werden sie als Liste angezeigt; sonst folgt die Meldung Keine Beiträge vorhanden.
Troubleshooting & FAQ
- 500 Error:
Prüfe, ob der Namespace des Controllers stimmt und Composer Autoload neu geladen wurde (composer dump-autoload
). - Blade-Fehler:
View-Dateiname stimmt nicht oder liegt am falschen Ort (z. B.resources/views/index.blade.php
). - Artisan-Fehler:
Starte mitbashphp artisan route:list php artisan config:clear php artisan view:clear
- Leere Liste:
Noch keine Einträge in der Datenbank? Erzeuge Testdaten via Seeder oder im Tinker (php artisan tinker
).
Weitere Ressourcen & Links
- Laravel Routing — Blog-Artikel (Vorheriges Tutorial): Grundlagen des Routings
- Laravel Datenbank — Blog-Artikel (Nächster Schritt): Datenbank und Eloquent
- Laravel Dokumentation – Controllers
- Laravel Dokumentation – Routing
- Laravel Dokumentation – Blade
- admin-code.de – Weitere Artikel & Projekte