Laravel 4.1: Erstellen einer Blog Applikation (Teil 1)

In diesem Beitrag werde ich euch Schritt für Schritt zeigen, wie man eine simple Blog Applikation in Laravel 4.1 erstellt. Wir werden hierbei Models, Views und Controller kennenlernen, sowie Migrations, Eloquent und die Blade Templating Engine.

Empfohlene Vorkenntnisse

Inhaltsverzeichnis

  1. Laravel Projekt erzeugen
  2. Datenbank-Verbindung herstellen
  3. Datenbank Struktur mit Migrations
  4. Routen festlegen
  5. Posts Controller erstellen
  6. Post Model erstellen mit Eloquent
  7. View erstellen mit Blade
  8. Model-View-Controller Prinzip
  9. Ausblick

1. Laravel Projekt erzeugen

Wir öffnen die Eingabeaufforderung und erzeugen mit Hilfe von Composer unsere neue Laravel Applikation. In unserem Beispiel werde ich sie einfach blog nennen. Fühlt euch frei, eurer Laravel Applikation einen kreativeren Namen zu geben. 😉
composer create-project laravel/laravel blog --prefer-dist
Je nach Konfiguration eurer Entwicklungsumgebung ist euer Projekt über eine unterschiedliche URI aufrufbar. In meinem Fall (Xampp unter Windows) ist es http://localhost/blog/public/.

Ihr seid jetzt schon überfordert? Dann schaut euch meinen Beitrag zur Installation und Einführung an.

2. Datenbank Verbindung herstellen

Unsere Blog Applikation wird eine MySQL Datenbank zur Speicherung von Daten verwenden. Entsprechend erzeugen wir als erstes eine Datenbank (bspws. mit phpMyAdmin) – ich nenne sie ebenfalls blog. Als nächstes müssen wir unserer Applikation die Verbindungs Daten zur Datenbank mitteilen. Diese werden in app/config/database.php verwaltet. Die markierten Zeilen müssen von euch individuell angepasst werden.

3. Datenbank Struktur mit Migrations

Als erstes benötigt unsere Datenbank eine Tabelle zur Speicherung unserer Blog Einträge – nennen wir sie posts. Normalerweise würden wir diese Tabelle auch direkt über phpMyAdmin erstellen. Laravel 4.1 bietet uns aber ein mächtiges Werzeug zur Datenbank-Versionierung, welches wir auch nutzen möchten: Migrations. Wie erzeugt man nun aber eine Tabelle mit Migrations? Hierzu wechseln wir wieder in unsere Eingabeaufforderung und nutzen folgendes Kommando.
php artisan migrate:make create_posts_table --create=posts
Wichtig ist, dass wir unseren Migrations sprechende Namen geben, wie eben create_posts_table, die genau beschreiben, was wir tun. Wechseln wir nun in unser app/migrations Verzeichnis finden wir eine Datei, die ungefähr so heißt 2014_03_27_152719_create_posts_table mit folgendem Inhalt.

Wie euch sicherlich aufgefallen ist, habe ich vier zusätzliche Zeilen eingefügt. Diese Zeilen repräsentieren unsere Felder:

  • title vom Typ string für den Titel eines Blog Eintrags
  • content vom Typ text für den Inhalt eines Blog Beitrags
  • published vom Typ boolean, um festzulegen, ob ein Artikel schon veröffentlich wurde und
  • user_id vom Typ integer, um den Blog Eintrag einem User (Autor) zuzuweisen.

Standardmäßig erzeugt Laravel für uns bereits

  • einen Primärschlüssel id und
  • zwei Timestamps created_at und updated_at.

Nun wechseln wir wieder in unsere Eingabeaufforderung und starten unsere Migration mit php artisan migrate. Ein Blick in phpMyAdmin überzeugt uns davon, dass alles funktioniert hat und die Tabelle posts angelegt wurde.

4. Routen festlegen

Wie wir wissen, legen die Routen fest, auf welche URIs unsere Applikation reagiert. Wir wollen also eine Route /posts festlegen, bei deren Aufruf und alle Blog Einträge ausgegeben werden. Wir definieren unsere Route also in der app/routes.php.

Wir wollen dieses Mal aber keine Closures verwenden, sondern unsere Programmlogik in Controller auslagern. Hierzu ändern wir unsere Route entsprechend ab.

Wir rufen nun in der Klasse PostsController die Methode index auf. Also müssen wir diesen Controller bauen.

5. Posts Controller erstellen

Wir erstellen also eine Datei app/controllers/PostsController.php mit folgendem Inhalt.

Rufen wir nun unsere Route blog/public/posts in unserem Browser auf, sehen wir wie erwartet die statische Ausgabe Zeige alle Posts. Aber keine Angst, das war es natürlich noch nicht. 😀 Im nächsten Schritt werden wir die Blog Einträge aus der Datenbank auslesen.

6. Post Model erstellen mit Eloquent

Noch weiß unsere Laravel Applikation noch nicht, auf welche Tabelle in unserer Datenbank wir zugreifen möchten. Grob gesagt legt ein Model fest, wie unsere Daten verwaltet werden. In unserem Fall werden wir also für jede Tabelle ein Model anlegen. Für unsere posts Tabelle erstellen wir also die Datei app/models/Post.php mit folgendem Inhalt.

Dadurch, dass wir von der Klasse Eloquent erben, kümmert sich Laravel automatisch um alle unsere Felder. Wichtig ist, sich hier an die Benennungs Konvention zu halten. Dadurch, dass unsere Model-Klasse Post heißt, greift Eloquent automatisch auf die Tabelle posts zu.

Nun können wir auch unseren Controller app/controllers/TasksController.php anpassen.

Wir sehen hier sehr schön, wie intuitiv und anschaulich die Eloquent Syntax ist. Post::all() entspricht der SQL Abfrage SELECT * FROM posts – wir lesen also alle Blog Einträge aus.

Rufen wir nun unsere Route blog/public/posts auf, erhalten wir ein ähnlich unspektakuläres Ergebnis wie vorhin: []. Woran liegt das? Nun, wir haben ja noch keine Einträge in unserer posts Tabelle. Wir fügen jetzt manuell bspws. per phpMyAdmin einen Beispiel-Eintrag in unsere Tabelle ein. Die user_id hat zum momentanen Zeitpunkt noch keine Bedeutung, wir tragen einfach 1 ein.

Eine beispiehalfte Ausgabe im Browser würde nun so aussehen:

Eigentlich merkwürdig, dass JSON ausgeben wird, oder? Ja, aber tatsächlich macht Laravel das für uns standardmäßig automatisch, was beispielsweise beim Bauen von APIs praktisch sein kann.

7. View erstellen mit Blade

So praktisch eine JSON Ausgabe bei APIs auch sein mag, wir wollen in unserem Blog natürlich eine schöne formatierte Ansicht. Für die Daten ist das Model zuständig, für die Verarbeitungslogik der Controller – wer kümmert sich nun um die Ansicht? Der View! Laravel 4.1 kommt standardmäßig mit der Templating Engine Blade, welche wir auch verwenden möchten. Wir erstellen also die Datei app/views/posts/index.blade.php mit folgendem Inhalt.

Wir sehen, dass Blade eine leicht veränderte Syntax hat, die übersichtlicher sein soll. Wer PHP versteht, dem sollte der obige Code intuitiv klar sein. Wobei die geschwungenen Klammern einem echo entsprechen. Ich finde Blade super übersichtlich – wer damit nicht klar kommt, kann hier aber auch normales PHP schreiben.

Wieder müssen wir unseren Controller app/controllers/PostsController.php anpassen, da dieser ja nun den View erstellen soll.

Wichtig ist, dass wir unserem View als zweitem Parameter die Posts übergeben, da unser View an sich keine Logik implementiert und stumpf das ausgibt, was wir ihm an Daten zur Verfügung stellen.

Unsere Grundfunktionalität unserer Applikation – das Ausgeben der Blog Einträge – steht nun. 🙂

8. Model-View-Controller Prinzip

Ich hoffe, es ist klar geworden, wie Model, View und Controller zusammenarbeiten, ineinandergreifen und wo die jeweiligen Aufgabenbereiche liegen. Durch diese Aufteilung wird eure Applikation sehr übersichtlich und gut wartbar. Nicht zu letzt erleichtert diese Trennung auch enorm das Schreiben von Tests, mit denen wir uns später in dieser Serie auch noch beschäftigen werden. Alles in allem, ist es äußerst sinnvoll und ratsam sich das Model-View-Controller Prinzip so früh wie möglich zu verinnerlichen.

9. Ausblick

Natürlich ist unsere Blog Applikation noch extrem rudimentär und schreit förmlich danach erweitert, verbessert und verschönert zu werden – was wir auch in Teil 2 dieser Serie angehen werden. Die grundlegenden Elemente von Laravel 4.1 haben wir aber bereits hier in Teil 1 der Serie behandelt und mit diesem Wissen solltet ihr schon in der Lage sein, eigene kleine Laravel Applikationen zu schreiben.

Wenn ihr Fragen habt, scheut euch nicht, in den Kommentaren nachzufragen.

Ich würde mich freuen euch in Teil 2 dieser Serie wieder zu sehen. Bis dahin schaut euch doch auch mal meine anderen Beiträge an. Möchtet ihr beispielsweise etwas zu Authentifizierung lernen oder tiefer in das Thema Routing in Laravel 4.1 einsteigen?

Weiterführende Beiträge und Links

Laravel 4.1: Erstellen einer Blog Applikation (Teil 1)
Markiert in:                         

4 Gedanken zu „Laravel 4.1: Erstellen einer Blog Applikation (Teil 1)

  • 8. Mai 2014 um 14:25
    Permalink

    Super Artikel zum Thema Laravel und dabei sehr verständlich erklärt… gerne mehr davon!!!

    Antworten
  • 4. Juni 2015 um 18:55
    Permalink

    Guten Tag,
    habe mit Begeisterung den ersten Teil zu LARAVEL „Erstellen einer Blog Applikation“ gefunden,
    und mich sehr gefreut dass es eine „Step by Step“ Anleitung zu LARAVEL gibt.
    Finde dies sehr hilfreich sich in LARAVEL einzuarbeiten.
    Leider finde ich die weiteren Teile der Anleitung nicht.

    Gibt es weitere Quellen mit ähnlichen Anleitungen?
    Ich bin über jeden Tip Dankbar da ich mich seit kurzem in LARAVEL einarbeiten möchte.
    (leider sind meine Englisch Kenntnisse nicht gerade am besten, wodurch ich mit den Englischen Dokumentationen doch recht schwer vorankomme)

    mit bestem Dank
    Thomas Schwendinger

    Antworten
    • 8. Juni 2015 um 17:16
      Permalink

      Hallo Thomas,

      Freut mich, dass dir meine Anleitung etwas geholfen hat.

      Die Serie „Laravel 4.1: Erstellen einer Blog Applikation“ wurde eingestellt, da sie mit dem Erscheinen von Laravel 5 nicht mehr aktuell ist. Ich plane eine ähnliche Serie für Laravel 5 – die Vorbereitung dauert allerdings noch etwas.

      Bis dahin findest du in meinem aktuellen Beitrag „Die 5 besten Tutorials für den Einstieg in Laravel 5“ gute aktuelle Anleitungen, um dich in Laravel 5 einzuarbeiten – auch eine in deutscher Sprache.

      Wenn du spezifische Fragen hast, hinterlasse sie hier gerne als Kommentar.

      Viele Grüße,
      Johannes

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.