Laravel Anfänger Tutorial #01 zum mitmachen für dich

Werbung

laravel-anfaenger-tutorial
Hallo und herzlich Willkommen zu meinem Laravel Anfänger Tutorial. Das Tutorial ist in knapp drei Tagen entstanden. Ich kenne mich mit einigen PHP Frameworks aus, aber Laravel ist auch für mich neu. Daher finde ich es toll, dass wir gemeinsam die ersten Schritte mit Laravel machen können.

Das Tutorial ist nicht mehr aktuell. Hier geht es zum neuen Laravel Anfänger Tutorial. Du kannst dir auch das neue kostenlose Laravel Anfänger Tutorial E-Book holen.

Inhaltsverzeichnis

Für wen ist dieses Tutorial?

Fall du dich schon einige Zeit mit PHP beschäftigst und vielleicht auch schon die eine oder andere kleine Anwendung entwickelt hast, dann ist das Tutorial genau richtig für dich. Ich werde nicht mehr auf die PHP Grundlagen eingehen und auch Objektorientierte Entwicklung sollte für dich kein Fremdwort sein.

Falls du eine Einführung in PHP benötigst, dann empfehle ich dir die Codecademy oder PHP Tutorial.

Die Projekt Dateien habe ich für dich in ein Github Projekt geladen. Hier kannst du dann den Code nachvollziehen. Laravel Tutorial Github Projekt.

Update 26.07.2015
Einige Teile habe ich mittlerweile überarbeitet. Der HomeController wurde in PageController umbenannt. Die Einbindung der Service Provider für das Zusatzpaket der Form Tags hat sich geändert.

Update 13.02.2015
Ich habe das Tutorial heute auf Laravel 5 angepasst. Da die Tutorial Serie noch relativ jung ist, ist es jetzt genau richtig umzuschwenken auf die aktuellste Version.

Über einen Kommentar am Ende des Tutorials würde ich mich wirklich freuen. Sowohl Kritik als auch Lob ist gerne gesehen. So kann ich das Tutorial auch immer weiter verbessern.

Aber genug der langen Rede. Jetzt viel Spaß!

Download und Installation von Laravel

Den Download übernimmt das Tool Composer für dich. Hast du es noch nicht installiert, dann folge mir einfach. Bei mir fehlt es in der Umgebung in der ich jetzt entwickle auch noch. Daher könnten wir das kurz zusammen machen.

Falls der Befehl composer bei dir auf der Konsole bereits funktioniert kannst du die Composer Installation einfach überspringen.

Composer Installation für Mac OS

Am besten installierst du Composer global damit es überall aufrufbar ist. Dazu einfach den Download in irgendeinem Verzeichnis durchführen. Das kann auch ein Temp Verzeichnis sein.

Mit curl -sS https://getcomposer.org/installer | php auf der Konsole lädst du Composer in das Verzeichnis. Danach mit mv composer.phar /usr/local/bin/composer global verfügbar machen.

Kurz noch composer in der Konsole ausführen und die Ausgabe überprüfen. Siehst du jetzt die verfügbaren Composer Befehle, dann läuft Composer bei dir. Prima.

Composer Installation für Windows

Unter Windows ist die Installation entsprechend einfach. Lade dir einfach die Composer-Setup.exe runter und starte mit einem Doppelklick. Die Installation ist relativ schnell durch. Danach ist der Befehl composer von überall aus aufrufbar.

Um die wirklich aktuellste Composer Version zu bekommen rufe kurz composer self-update auf. Nun ist alles top aktuell.

Da du Composer jetzt installiert hast und die Installation unter Mac OS und Windows sehr einfach ist, brauchst du nur noch Laravel mit Composer runterladen und installieren.

Dazu gehst du in der Konsole in das Verzeichnis in dem das neue Projekt initialisiert werden soll. Du brauchst vorher kein Verzeichnis anzulegen. Das macht Composer für dich.

Auf der Konsole gibst du einfach composer create-project laravel/laravel demolaravel --prefer-dist ein und es wird für dich ein neues Verzeichnis demolaravel erstellt. Dort sind jetzt die Laravel Projektdateien drin. Du kannst das Verzeichnis natürlich auch anders benennen.

Nach der Laravel Installation erscheint am Ende eine Meldung wie Application key [GxEpG8NNYbHIGNSVNwvQmiJf4nFJ2M1p] set successfully. Wenn du das siehst, dann scheint alles funktioniert zu haben. Toll!

Das Laravel Kommando Tool Artisan kann den ab PHP 5.4 integrierten Webserver nutzen. Dazu gehst du in das Laravel Projekt Verzeichnis demolaravel. Jetzt kannst du mit php artisan serve den Webserver starten.

Aufruf der Demo Seite

Wenn du jetzt im Browser die angegebene Adresse eingibst, in der Regel wird das Laravel http://localhost:8000 sein, dann hast du die Installation erfolgreich überstanden.

Laravel 5 Erster Aufruf

Bis zu diesem Punkt unterscheiden sich Laravel 4 und Laravel 5 nicht. Die Installation mit Composer ist exakt die gleiche.

Bekommst du beim Aufruf einen Fehler, dann kann das an fehlenden Dateirechten liegen. Dazu einfach die Verzeichnisse storage/logs und storage/framework mit Schreibrechten versehen.

Layout mit Twitter Bootstrap erstellen

Der Master Branch von Laravel auf Github unterscheidet sich in einigen Teilen von der Release Version. Daher ist es mir in der ersten Version des Tutorials passiert, dass ich eine app.blade.php beschrieben habe, die aber gar nicht vorhanden ist. Auch habe ich in einer Version Teile von Twitter Bootstrap gesehen. Auch dies ist in dem Release, welches wir über den Composer ziehen, nicht vorhanden.

Auf jeden Fall setze ich in diesem Tutorial auf Twitter Bootstrap als Framework für das Layout. Mit Twitter Bootstrap ist es sehr einfach ein Responsive Layout zu erstellen ohne viel rumfummeln zu müssen. Später kannst du auch dein eigenes HTML verwenden oder ein anderes HTML / CSS Framework. Twitter Bootstrap bietet aber auch eine gute Grundlage für eigene Designs.

Wir brauchen für unser Grundlayout aber noch eine Datei aus dem Live Twitter Bootstrap Projekt. Dazu lädst du Bootstrap am besten von der offiziellen Seite runter. Klick hier den Button „Download Source“ an. Die Source Version enthält alle Beispieldateien, die du gleich noch brauchen wirst für das Grundlayout.

Im Ordner docs/examples von Twitter Bootstrap sind die Beispiel Layouts. Später kannst du diese Layouts als Startlayout für dein eigenes benutzen. Da wir das Tutorial zusammen durcharbeiten, nehmen wir das Layout aus dem Ordner sticky-footer-navbar. Das ist ein ganz ansprechendes Layout und für unsere Zwecke ausreichend.

Kopiere die sticky-footer-navbar.css aus dem Ordner in dein Laravel Projekt und lege sie dort unter /public/css ab. Jetzt benenne sie noch in style.css um.

In Laravel 5 ist bereits alles auf die Nutzung der Template Engine Blade ausgerichtet. Blade ist auch in älteren Laravel Versionen vorhanden. Die Beispiel Anwendung, die man direkt nach der Installation sieht, ist erst seit Laravel 5 mit der Blade Engine erstellt worden.

Damit erspart uns Laravel einiges an Arbeit, die mit der Version 4 noch notwendig war.

Unsere Layout Datei liegt in /resources/views und heißt /resources/views/welcome.blade.php. Wenn du Laravel 4 kennst, dann wirst du hier bereits einen Unterschied merken. Die Views lagen in älteren Versionen unter /app/views. Dies hat man jetzt voneinander entkoppelt.

In dem Ordner /resources/views lege ich die Datei app.blade.php an. Das ist das Grundlayout. Diese Abtrennung ist vor allem sinnvoll, wenn ich später noch weitere Layouts habe. Zum Beispiel wäre ein eigenes Layout für die Administration eine gute Idee.

Den Inhalt der /resources/welcome.blade.php lösche ich und füge in die erste Zeile

@extends('app')

ein. Damit weiß die View, dass es eine Layout Datei gibt. Danach kopiere ich den Inhalt der index.html aus dem Bootstrap Ordner sticky-footer-navbar in die /resources/views/app.blade.php. Die Vorlange findest du in den runtergeladenen Bootstrap Dateien in /docs/sticky-footer-navbar/index.html.

Als nächstes lagere ich den individuellen Seiteninhalt aus. Dazu kopiere ich aus der /resources/views/app.blade.php den Inhalt des container DIV die /resources/views/welcome.blade.php. Aber nur den Inhalt des DIV und nicht das DIV selbst.

Vor dem gerade kopierten Inhalt füge ich in die /resources/views/welcome.blade.php noch

@section('content')

. Nach dem Inhalt füge ich

@yield('content')

einfügen und zwar in das container DIV, aus dem wir den Inhalt ja verschoben haben.

Was jetzt noch fehlt, sind die Twitter Bootstrap CSS, JS und Font Dateien. Die findest du im Download Ordner unter /docs/dist. Damit ich die Bootstrap Sachen von dem Rest getrennt habe, erstelle ich einen Ordner /public/bootstrap. Dort kopiere ich den kompletten dist Ordner rein. In einem späteren Tutorial werde ich auch noch auf das Arbeiten mit Less eingehen, aber für den Anfang reicht das jetzt hier mal aus.

Damit unsere Anwendung die Dateien auch findet, sind ein paar Anpassungen in der /resources/views/app.blade.php notwendig. Und zwar ersetzen wir dort alle Vorkommen von ../../dist/ mit /bootstrap/dist/.

Als letzten Schritt, bevor wir uns unsere Seite mal wieder anschauen, muss ich noch mein eigenes CSS einbinden. Ich hatte ja am Anfang die sticky-footer-navbar.css als style.css gespeichert. Hier sind noch ein paar Informationen drin, die noch eingebunden werden müssen. Dazu öffen ich die /resources/views/app.blade.php und füge direkt nach Anweisung zum Einbinden des Bootstrap CSS, die Anweisung für unsere style.css ein.

Jetzt können wir endlich mal wieder unsere Webseite betrachten und neu laden. Jetzt solltest du die Änderungen ohne Fehlermeldungen sehen können. Was noch fehlt, ist

Beginnen wir mit den Vorbereitungen auf mehr Inhalt. Dazu fügen wir unseren ersten eigenen Controller hinzu. Dazu lege ich die Datei /app/Http/Controllers/PageController.php an. Der Inhalt sieht folgendermaßen aus:

 

Ich habe jetzt die Methode, die eine View aufruft. Damit dies geschehen kann, muss ich noch das Routing entsprechend ändern. Dazu öffne ich /app/Http/routes.php.

Hier existiert bereits eine Route für die Startseite. Hier wird bisher nur die View welcome aufgerufen. Diese Route lösche ich und füge die eine neue Route ein.

Route::get('/', 'PageController@index');

Laravel mit Twitter Bootstrap

Der Umbau des ersten Teils dieses Tutorials auf Laravel 5 ging sehr einfach von der Hand. Da sich die Ordnerstruktur etwas geändert hat, musste ich etwas suchen. Durch die Integration von Twitter Bootstrap konnte ich einigen Text rauswerfen. Leider hatte ich zwischenzeitlich eine Master Version ausprobiert, die bereits Twitter Bootstrap integriert hatte. Dadurch wurde des Tutorial ein wenig unschlüssig. Das ist jetzt aber behoben.

Typische Seiten wie Startseite, Impressum und Kontaktseite erstellen

Bisher kannst du nur die Standard Seite von Laravel sehen. Das zeigt jetzt noch nicht ganz so viel davon was das Framework eigentlich kann. Das hättest du mit HTML viel schneller hinbekommen. Also schauen wir uns mal an wie du weiter vorgehen kannst.

Zuerst solltest du Laravel per Konfiguration mitteilen in welcher Umgebung gerade gearbeitet wird. Da du lokal entwickelst, ist local die richtige Umgebung. Durch setzen der richtigen Umgebung bekommst du die Möglichkeit verschiedene Einstellungen zu laden abhängig davon ob es sich um ein Entwicklungssystem, ein Test System oder ein Live System handelt. Vielleicht hast du sogar noch ein Staging System, dann hättest du insgesamt vier Umgebungen.

Nach der Installation mit Composer ist bereits local als APP_ENV eingestellt. In Laravel 5 unterscheidet sich die Erkennung grundsätzlich von den Vorgängerversionen. Hier gibt es im Root Verzeichnis des Projekts eine .env Datei in der spezifische Einstellungen drin stehen. Die Einstellungen in der .env Datei werden direkt in die Umbebungsvariablen geladen und sind somit nicht im Code vorhanden. Alle wichtigen und sensiblen Konfigurationsdaten sind in dieser einen .env Datei.

Diese Umgebungsvariablen können wir mit env('APP_DEBUG') auslesen. Man merkt an vielen Stellen, dass sich die Entwickler sehr viele Gedanken gemacht haben und vieles sehr gut gelöst ist.

In die /config/app.php fügst da an das Ende bitte 'name' => 'Laravel Anfänger Tutorial'

Damit können wir gleich den Namen der Anwendung auf der Webseite anzeigen. Dazu gehst du in /resources/views/app.blade.php und fügst an die Stelle an der jetzt noch Project name steht <?php echo Config::get('app.name')?> ein.

Jetzt kannst du die Webseite wieder aufrufen. Wenn alles geklappt hat, dann siehst du jetzt anstatt "Project Name" deinen vorher eingegebene Namen. Super!

Werbung

Laravel Tutorial Project Name

Nachdem wir jetzt die Minimal Konfiguration durchgegangen sind, kümmern wir uns jetzt um das Menü bzw. die Navigation.

Idealerweise lagern wir die Navigation aus und damit machen wir jetzt auch weiter.

Erstell im Verzeichnis /resources/views die navigation.blade.php. Dort fügst du alles aus der /resources/views/app.blade.php was unter dem <div> mit der id navbar steht. Also das komplette <ul>. In der app.blade.php steht dann an dieser Stelle @include('navigation'). Schau dir die Webseite an ob das Menü noch angezeigt wird. Falls ja, dann hat alles geklappt.

Jetzt können wir die navigation.blade.php ändern, damit sie auf unsere Bedürfnisse angepasst ist.

Entferne dazu alle <li> unter dem <ul>. Wir starten hier mit einer leeren Navigation, die wir jetzt befüllen.

  • Startseite
  • Impressum
  • Kontaktseite
  • Wenn du die Webseite jetzt aufrufst, dann müsstest du die neue Navigation sehen und auch auf die einzelnen Punkt klicken können. Dahinter liegt jetzt noch nichts, aber das ändern wir ja gleich direkt.

    Du könntest jetzt für jeden Menüpunkt einen eigenen Controller einrichten. Das macht hier aber kaum Sinn bei einem so kleinen Projekt.

    An dieser Stelle können wir uns entscheiden ob wir alle Methoden in den Home Controller packen oder direkt im Routing schon verarbeiten. Die Verarbeitung im Routing macht immer dort Sinn, wenn nicht zusätzliche Aufrufe zum Beispiel zu einer Datenbank notwendig sind. Ich erstelle in diesem Tutorial alle Methoden oder Actions im Home Controller.

    Wir kommen in einem späteren Tutorial bestimmt wieder auf diese Vorgehensweise zu sprechen und dann gibt es noch die eine oder andere Möglichkeit, die ich vorstellen möchte.

    Ok, also öffnen wir den Home Controller in /app/Http/Controllers/PageController.php. Hier siehst du bereits die index Methode. In unserem Routing haben wir für / genau diesen Controller mit dieser Methode angegeben. Die Anweisung sagt, dass hier jetzt aus dem /resources/views/ die home.blade.php gerendert werden soll. Natürlich passiert im Hintergrund noch etwas mehr, aber das soll uns jetzt erstmal reichen.

    In dem Home Controller fügst du jetzt zwei weitere Actions hinzu. Und zwar impressum und kontakt. Du kannst dich dabei an der index Action orientieren.

    Der komplette PageController.php sollte jetzt in etwa so aussehen

     

    Die Kommentare habe ich entfernt. Vorsicht Klugscheisser! - Du solltest deinen Quellcode immer dokumentieren 🙂

    Jetzt legen wir noch schnell die Views an. Dazu legst du unter /resources/views zwei neue Dateien an. Und zwar die impressum.blade.php und die kontakt.blade.php. Du kannst ja zur Überprüfung in die Datei jeweils etwas unterschiedliches rein schreiben.

    Damit die Actions aufgerufen und die Views gerendert wird müssen wir noch das Routing erweitern. Dies machen wir in der /app/Http/routes.php. Dort fügst du einfach

    Route::get('/impressum', 'PageController@impressum');
    Route::get('/kontakt', 'PageController@kontakt');
    

    ein.

    Wenn du jetzt die Seite Impressum oder Kontakt aufrufst, dann wirst du sicherlich enttäuscht sein. Kein Layout und es steht nur das drin, was du selbst eingetragen hast. Das liegt daran, dass in der app.blade.php Layout Datei der Content Bereich durch @yield('content') gekennzeichnet ist. Das haben wir in den neuen Views aber noch nicht berücksichtigt.

    Daher ändere den Inhalte der impressum.blade.php und kontakt.blade.php in

    @extends('app')
    
    @section('content')
        

    Impressum

    @endsection

    Für die Kontaktseite dann entsprechen in Kontakt in der Content Section. Wenn du jetzt die beiden Seiten aufrufst, dann sollte der Inhalte auch angezeigt werden.

    Puh. Pause gefällig? Geht mir auch so. An diesem Tutorial sitze ich jetzt etwa an zwei Abenden. Eigentlich dachte ich, dass ich schneller damit durch wäre, aber gerade im Detail dauert es etwas länger.

    Update 13.02.2015
    Und ich investiere noch etwas mehr Zeit, da ich jetzt alles auf Laravel 5 umbaue. Das passt aber ganz gut, weil das Release jetzt gerade erst raus ist und wir somit direkt mit dem neuen Version beginnen können.

    Ich hoffe du bist noch bei mir.

    An der Startseite und an der Impressum Seite machen wir jetzt nichts mehr zusammen. Diese beiden Seiten beinhalten nur Text als Inhalt. Wichtiger ist daher die Kontaktseite. Das ist auch der nächste Punkt.

    Kontaktformular einbauen

    Für das Kontaktformular habe ich das HTML schon vorgebaut. Dies ist auch relativ unspektakulär.

    @extends('app')
    
    @section('content')
        

    Kontakt

    @if ( $errors->count() > 0 )
    @endif @if (Session::get('sendsuccess'))
    @endif {!! Form::open(array('action' => 'PageController@kontakt', 'method' => 'post', 'class' => 'form-horizontal')) !!}
    {!! Form::label('email', 'E-Mail Adresse', array('class' => 'col-sm-2 control-label')) !!}
    {!! Form::text('email', '', array('class' => 'form-control', 'placeholder' => 'Deine E-Mail Adresse')) !!}
    {!! Form::label('message', 'Nachricht', array('class' => 'col-sm-2 control-label')) !!}
    {!! Form::textarea('message', '', array('class' => 'form-control', 'placeholder' => 'Deine Nachricht')) !!}
    {!! Form::submit('NACHRICHT ABSENDEN', array('class' => 'btn btn-default')); !!}
    {!! Form::close() !!} @endsection

    In Laravel 5 hat sich auch an der Formularerstellung einiges getan. Zum einen werden die Form Tags jetzt mit {!! gestartet und nicht mehr mit {{. Zusätzlich wurden das Paket aus dem Laravel 5 Core entfernt. Allerdings ist es noch als zusätzliches Paket erhältlich und kann mit Composer installiert werden.

    Dazu einfach in der composer.json im require Bereich "illuminate/html": "~5.0" einfügen. Danach ein composer update ausführen und das Paket wird installiert. Zusätzlich müssen die neuen Provider noch in der Application registriert werden. Dies geschieht in der /config/app.php. Dort einfach in das providers Array am Ende


    Illuminate\View\ViewServiceProvider::class,
    Illuminate\Html\HtmlServiceProvider::class

    einfügen. Und in das alias Array muss noch

    'Form' => Illuminate\Html\FormFacade::class,
    'HTML' => Illuminate\Html\HtmlFacade::class'

    rein.

    Du kannst jetzt die Seite aufrufen, deine E-Mail Adresse und einen Text eintragen und auf "NACHRICHT ABSENDEN" klicken.

    Ups! Ja, ich weiss. Fehlermeldung ole.

    Obwohl in der Adressleiste des Browsers /kontakt steht und das ja eigentlich funktioniert, bekommen wir eine Fehlerseite zu sehen. Das liegt daran, dass das Routing von Laravel zwischen GET und POST unterscheiden kann und es auch tut. Damit ist es möglich die Requests sauber zu trennen.

    Daher musst du in der /app/Http/routes.php einen neuen Eintrag

    Route::post('/kontakt', 'PageController@sendkontakt');
    

    hinzufügen. Was jetzt noch fehlt ist die Action sendKontakt im Home Controller. Also in der /app/Http/Controllers/PageController.php eine neue Action einfügen mit dem Namen sendkontakt In dieser Action müssen wir die Verarbeitung des Formulars vornehmen.

    Füge nun am Anfang der neuen Methode sendKontakt das Array mit den Validator Regeln ein

    $rules = array(
        'email'     => 'Required|Between:3,64|Email',
        'message'   => 'Required'
    );
    

    Die Array Keys email und message sind die Namen aus dem Formular. Die Validator Regeln sind selbstsprechend hoffe ich.

    • Required = Muss aufgefüllt werden
    • Between 3,64 = Muss zwischen 3 und 64 Zeichen lang sein
    • Email = hier wird der Wert darauf geprüft ob er vom Typ E-Mail ist

    Als nächstes müssen wir den Validator aufrufen mit $validator = Validator::make(Input::all(), $rules);

    Mit Input::all() werden alle Parameter aus dem Request geholt und mit den Regeln an den Validator übergeben.

    Jetzt müssen wir noch prüfen ob die Regeln mit den übergebenen Werte übereinstimmen.

    if($validator->passes()) {
        echo 'hat geklappt';
    } else {
        echo 'hat nicht geklappt';
    }
    exit;
    

    Du kannst jetzt mal die Webseite neu laden und auf die Kontakt Seite gehen. Füll zuerst nichts aus und klick trotzdem auf "NACHRICHT VERSENDEN". Jetzt noch mal mit richtigen Daten, also einer korrekten E-Mail Adresse und etwas Text. Fein, sollte funktionieren.

    Viel Sinn ergibt das natürlich immer noch nicht.

    Daher gehen wir erst den Fall des Scheiterns durch. Dazu entfernst du die Zeile echo 'hat nicht geklappt'; und ersetzt dies durch return Redirect::action('PageController@kontakt')->withInput()->withErrors($validator);

    Damit wird ein Redirect auf die kontakt Route im Home Contorller ausgeführt und die Fehlermeldungen werden gleich mit übergeben.

    Um zu sehen welche Fehler aufgetreten sind, müssen wie diese noch in die View rendern. Daher die /resources/views/kontakt.blade.php öffnen und unter die <h1>

    @if ( $errors->count() > 0 )
        
    @endif

    einfügen und schon erscheinen die Fehlermeldungen, wenn du das Formular abschickst mit ungültigen Eingaben.

    Jetzt werden die Fehlermeldungen in Englisch ausgegeben und Laravel bringt von Haus aus auch keine deutschen Übersetzungen mit. Das sehe ich allerdings nicht als großes Problem, da auch in anderen PHP Frameworks die deutschen Übersetzungen eher gruselig sind. Auch die englischen Ausgaben sind alles andere als schön. Du als Entwickler einer neuen Anwendung solltest daher von Anfang an auf eigene Fehlerausgaben setzen.

    Wir lassen die Sprache jetzt wie sie ist. Ich werde in einem späteren Tutorial oder eines Kurztipps bestimmt wieder darauf eingehen. Uns stört das jetzt nicht, denn wir haben mit dem zweiten Fall, also der erfolgreichen Validierung noch genug zu tun.

    Mail Versand über das Kontaktformular

    Den Fall, dass das Kontaktformular nicht richtig ausgefüllt wurde haben wir jetzt abgeschlossen. Nun kommen wir zum Erfolgsfall, also die korrekte Eingabe aller Formularfelder, Versand einer E-Mail mit den Werte aus dem Formular und Anzeige einer Erfolgsmeldung. Wenn wir das haben, dann ist das Laravel Anfänger Tutorial auch schon abgeschlossen.

    In der PageController.php ersetzen wir echo 'hat geklappt'; durch

    Mail::send('emails.kontakt.default', array('data' => Input::all()), function($message)
        {
    	$message->from('info@dirk-helbert.de', 'Laravel Anfänger Tutorial');
    	$message->to('info@dirk-helbert.de', 'Dirk Helbert')->subject('Nur ein Test!');
        });
    return Redirect::action('PageController@kontakt')->with('sendsuccess',1);
    

    Die View für die E-Mail wird mit emails.kontakt.default angegeben. Daher liegt sie unter /resources/views/emails/kontakt/default.blade.php. Der Inhalt sieht entsprechend spartanisch aus

    Hallo lieber Interessent,
    
    vielen Dank für Ihre E-Mail an uns. Wir werden diese so schnell wir möglich beantworten.
    
    ----
    Das war Ihre Nachricht:
    
    {{ $data['message'] }}
    
    ----
    
    Mit freundlichen Grüßen,
    Ihr Laravel Anfänger Tutorial Team
    

    In die /resources/views/kontakt.blade.php fügst du jetzt direkt nach dem <h1>

    @if (Session::get('sendsuccess'))
        
    @endif

    ein.

    Das war es fast. Du solltest in der /config/mail.php noch mail oder sendmail als driver für den E-Mail Versand setzen. Kurz noch prüfen ob die E-Mail auch wirklich ankommt, falls dein System dafür ausgelegt ist.

    Wir sind durch. Juchu!

    Update 13.02.2015

    Das Update des Tutorials auf Laravel 5 hat auch gut funktioniert. An einigen Stellen musste ich mir die Dokumentation oder auch in den Quellcode schauen. Ich denke es lohnt sich jetzt direkt mit Laravel 5 weiterzumachen.

    Vielen Dank für deine Aufmerksamkeit. Mir hat es viel Spaß gemacht durch dieses Anfänger Tutorial zu führen. Ich hoffe du konntest ein wenig davon mitnehmen. Einige Sachen wie Datenbankzugriffe, Artisan CLI und Caching habe ich bewusst raus gelassen. Ich denke aber, dass ich jetzt noch mehr Tutorials über und mit Laravel schreiben werde.

    Falls du einen Fehler gefunden hast, Lob oder Kritik loswerden möchtest, dann nutze bitte die Kommentarfunktion. Vielen Dank!

    Ich würde mich freuen dich auch beim nächsten Mail wieder begrüßen zu dürfen.

    Das Tutorial ist nicht mehr aktuell. Hier geht es zum neuen Laravel Anfänger Tutorial.