Die View ist die Präsentationsschicht in der MVC-Architektur. Sie ist dafür verantwortlich, die Daten aus dem Model in einer für den Benutzer verständlichen Form darzustellen.
✅ Darstellung von Daten: Zeigt Informationen aus dem Model an (z. B. eine Liste von Blogartikeln).
✅ Reaktion auf Benutzerinteraktionen: Nimmt Eingaben entgegen und leitet sie an den Controller weiter.
✅ Formatierung & Layout: Strukturiert Inhalte mit HTML, CSS oder Templates (z. B. in Laravel Blade oder Twig).
✅ Vermeidung von Geschäftslogik: Enthält keine Datenverarbeitung, sondern nur Darstellung.
<!-- resources/views/blog/index.blade.php -->
@extends('layouts.app')
@section('content')
<h1>Blog Posts</h1>
@foreach ($posts as $post)
<div>
<h2>{{ $post->title }}</h2>
<p>{{ $post->content }}</p>
</div>
@endforeach
@endsection
🔹 @foreach
: Durchläuft die Liste der Blogartikel und zeigt sie an.
🔹 {{ $post->title }}
: Gibt den Titel des Blogartikels aus.
✔ Die View sorgt für die Darstellung der Daten, ohne sie selbst zu verarbeiten.
✔ Sie hilft, die Trennung von Logik und Darstellung sauber umzusetzen.
✔ Durch Templates oder Frontend-Technologien (z. B. Vue.js, React) kann die View dynamisch gestaltet werden.
Das Model ist die Daten- und Logikschicht in der MVC-Architektur. Es verwaltet die Daten der Anwendung und stellt sicher, dass sie korrekt gespeichert, abgerufen und verarbeitet werden.
✅ Datenverwaltung: Speichert und verwaltet Daten, z. B. in einer Datenbank.
✅ Geschäftslogik: Enthält Regeln und Berechnungen (z. B. Rabattberechnung für Bestellungen).
✅ Datenvalidierung: Überprüft, ob Eingaben korrekt sind (z. B. ob eine E-Mail-Adresse gültig ist).
✅ Kommunikation mit der Datenbank: Führt CRUD-Operationen aus (Create, Read, Update, Delete).
class BlogPost extends Model {
protected $fillable = ['title', 'content']; // Erlaubte Felder für Massenverarbeitung
// Beziehung: Ein Blogpost gehört zu einem Benutzer
public function user() {
return $this->belongsTo(User::class);
}
}
🔹 fillable
: Bestimmt, welche Felder gespeichert werden dürfen.
🔹 belongsTo(User::class)
: Zeigt an, dass jeder Blogpost zu einem Benutzer gehört.
✔ Das Model verwaltet alle Daten und Geschäftslogik der Anwendung.
✔ Es sorgt für eine klare Trennung von Daten und Darstellung.
✔ Änderungen an der Datenstruktur müssen nur im Model erfolgen, nicht in der gesamten Anwendung.
Ein Controller ist eine zentrale Komponente im Model-View-Controller (MVC)-Architekturmuster. Er fungiert als Vermittler zwischen der Benutzeroberfläche (View) und der Geschäftslogik bzw. den Daten (Model).
Empfangen von Benutzereingaben
Verarbeiten der Anfrage
Kommunikation mit dem Model
Aktualisieren der View
Angenommen, ein Benutzer möchte einen neuen Blogbeitrag erstellen:
class BlogController extends Controller {
public function store(Request $request) {
// Validierung der Benutzereingabe
$request->validate([
'title' => 'required|max:255',
'content' => 'required',
]);
// Neues Blog-Post-Model erstellen und speichern
BlogPost::create([
'title' => $request->input('title'),
'content' => $request->input('content'),
]);
// Weiterleitung zur Blog-Übersicht
return redirect()->route('blog.index')->with('success', 'Post erstellt!');
}
}
✔ Ein Controller steuert den Ablauf einer Anwendung und trennt Geschäftslogik von der Präsentation.
✔ Er ermöglicht eine saubere Code-Struktur, da jede Komponente (Model, View, Controller) eine klare Aufgabe hat.
✔ In modernen Frameworks wie Laravel, Django oder ASP.NET gibt es oft vorgefertigte Routing-Mechanismen, die automatisch Anfragen den richtigen Controllern zuordnen.
Model-View-Controller (MVC) ist ein Software-Architekturmuster, das Anwendungen in drei Hauptkomponenten unterteilt:
Model (Daten & Logik)
View (Benutzeroberfläche)
Controller (Steuerung & Interaktion)
✔ Bessere Wartbarkeit durch klare Trennung von Logik, UI und Steuerung.
✔ Wiederverwendbarkeit der Komponenten.
✔ Einfache Testbarkeit, da Logik vom Interface getrennt ist.
✔ Flexibilität, da verschiedene Views für dasselbe Model genutzt werden können.
MVC wird häufig in Webentwicklung und Desktop-Anwendungen verwendet, z. B.: