Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Cover
Titel
Impressum
Widmung
Inhalt
Vorwort
1 Warum Laravel?
Warum ein Framework verwenden?
»Ich baue es einfach selbst«
Konsistenz und Flexibilität
Eine kurze Geschichte der Web- und PHP-Frameworks
Ruby on Rails
Eine Welle von PHP-Frameworks
Das Gute und das Schlechte an CodeIgniter
Laravel 1, 2 und 3
Laravel 4
Laravel 5
Laravel 6
Was ist so besonders an Laravel?
Die Philosophie von Laravel
Wie sich Laravel um die Zufriedenheit des Entwicklers verdient macht
Die Laravel-Community
Wie es funktioniert
Warum also Laravel?
2 Eine Laravel-Entwicklungsumgebung einrichten
Systemanforderungen
Composer
Lokale Entwicklungsumgebungen
Laravel Valet
Laravel Homestead
Ein neues Laravel-Projekt erstellen
Installation von Laravel mit dem Laravel-Installationsprogramm
Installation von Laravel mit dem create-project-Feature von Composer
Das Helfer-Paket installieren
Lambo: »laravel new« mit Düsenantrieb
Die Verzeichnisstruktur von Laravel
Die Ordner
Die Dateien
Konfiguration
Die .env-Datei
Achtung, fertig, los!
Testen
TL;DR
3 Routing und Controller
Eine kurze Einführung in MVC, HTTP-Verben und REST
Was ist MVC?
Die HTTP-Verben
Was ist REST?
Routendefinitionen
Routing-Verben
Routen-Handling
Routenparameter
Benannte Routen
Routen gruppieren
Middleware
Pfad-Präfixe
Fallback-Routen
Subdomain-Routing
Namensraum-Präfixe
Namenspräfixe
Signierte Routen
Eine Route signieren
Signierte Links zulassen
Views
Einfache Routen direkt mit Route::view() zurückgeben
Verwendung von View Composern, um Variablen für alle Views bereitzustellen
Controller
Benutzereingaben
Abhängigkeiten in Controller einfügen
Ressourcen-Controller
API-Ressourcen-Controller
Controller für eine einzelne Aktion
Routen-Modell-Bindung
Implizite Routen-Modell-Bindung
Benutzerdefinierte Routen-Modell-Bindung
Routen-Caching
Methoden-Spoofing für Formulare
HTTP-Verben in Laravel
HTTP-Methoden-Spoofing
CSRF-Schutz
Umleitungen
redirect()->to()
redirect()->route()
redirect()->back()
Andere Umleitungsmethoden
redirect()->with()
Einen Request abbrechen
Gebräuchliche Response-Typen
response()->make()
response()->json() und ->jsonp()
response()->download(), ->streamDownload() und ->file()
Testen
TL;DR
4 Vorlagen erstellen mit Blade
Daten ausgeben
Kontrollstrukturen
Bedingungen
Schleifen
Vorlagen-Vererbung
Definieren von Abschnitten mit @section/@show und @yield
Einbinden von Teilansichten
Verwendung von Stacks
Verwendung von Komponenten und Slots
View Composer und Service Injection
Daten mit View Composern an Views binden
Service Injection
Benutzerdefinierte Blade-Direktiven
Parameter in benutzerdefinierten Blade-Direktiven
Beispiel: Verwendung benutzerdefinierter Blade-Direktiven für eine mandantenfähige Anwendung
Einfachere benutzerdefinierte Direktiven für »if«-Anweisungen
Testen
TL;DR
5 Datenbanken und Eloquent
Konfiguration
Datenbankverbindungen
Weitere Optionen zur Konfiguration von Datenbanken
Migrationen
Migrationen definieren
Migrationen ausführen
Seeding
Eine Seeder-Klasse anlegen
Modellfabriken
Der Query Builder
Grundlegender Einsatz der DB-Fassade
Direktes SQL
Verkettung mit dem Query Builder
Transaktionen
Einführung in Eloquent
Erstellen und Definieren von Eloquent-Modellen
Abrufen von Daten mit Eloquent
Inserts und Updates mit Eloquent
Löschen mit Eloquent
Geltungsbereiche
Anpassen von Feldinteraktionen durch Akzessoren, Mutatoren und Attribut-Casting
Eloquent-Collections
Serialisierung mit Eloquent
Beziehungen mit Eloquent
Aktualisierung von Zeitstempeln durch verknüpfte Datensätze
Ereignisse in Eloquent
Testen
TL;DR
6 Frontend-Komponenten
Laravel Mix
Verzeichnisstruktur von Mix
Mix ausführen
Was bietet Mix?
Frontend-Frameworks und Auth-Scaffolding
laravel/ui
Frontend-Presets
Auth-Scaffolding
Paginierung
Paginieren von Datenbank-Ergebnissen
Paginatoren manuell erstellen
Message Bags
Benannte Error Bags
Hilfsfunktionen für Strings, Pluralisierung und Lokalisierung
Zeichenketten-Helfer und Pluralisierung
Lokalisierung
Testen
Message und Error Bags testen
Übersetzung und Lokalisierung
TL;DR
7 Benutzereingaben erfassen und verarbeiten
Injizieren eines Anforderungsobjekts
$request->all()
$request->except() und $request->only()
$request->has()
$request->input()
$request->method() und ->isMethod()
Benutzereingaben in Array-Form
JSON-Input (und $request->json())
Routendaten
Daten aus dem Request-Objekt extrahieren
Daten aus Routenparametern
Hochgeladene Dateien
Validierung
validate() auf das Anforderungsobjekt anwenden
Manuelle Validierung
Benutzerdefinierte Regeln
Fehlermeldungen der Validierung anzeigen
Form Requests
Erstellen eines Form Requests
Verwendung eines Form Requests
Eloquent-Modelle und Massenzuweisung
{{ und {!!
Testen
TL;DR
8 Artisan und Tinker
Eine Einführung in Artisan
Grundlegende Artisan-Befehle
Optionen
Befehle nach Gruppen
Benutzerdefinierte Artisan-Befehle
Ein Beispielbefehl
Argumente und Optionen
Benutzereingaben verwenden
Eingabeaufforderungen
Ausgaben
Schreiben von Closure-basierten Befehlen
Aufruf von Artisan-Befehlen in normalem Anwendungscode
Tinker
Laravels Dump-Server
Testen
TL;DR
9 Authentifizierung und Autorisierung
User-Modell und -Migration
Verwendung des globalen auth()-Helfers und der Auth-Fassade
Die Auth-Controller
RegisterController
LoginController
ResetPasswordController
ForgotPasswordController
VerificationController
ConfirmPasswordController
Auth::routes()
Das Auth-Gerüst
»Remember Me«: Die Erinnerungsfunktion
Manuelle Authentifizierung von Benutzern
Manuelles Abmelden eines Benutzers
Invalidierung von Sitzungen auf anderen Geräten
Auth-Middleware
E-Mail-Verifizierung
Blade-Direktiven zur Authentifizierung
Guards
Ändern des Standard-Wächters
Verwendung anderer Guards ohne Änderung des Standards
Hinzufügen eines neuen Guards
Closure Request Guards
Erstellen eines benutzerdefinierter Providers
Benutzerdefinierte Provider für nicht-relationale Datenbanken
Authentifizierungs-Ereignisse
Autorisierung (ACL) und Rollen
Berechtigungsregeln definieren
Die Gate-Fassade (und wie man Gate injiziert)
Gate für Ressourcen
Die Authorize-Middleware
Autorisierung per Controller
Überprüfen einer Instanz des User-Modells
Überprüfungen mit Blade
Abfangen von Prüfungen
Richtlinien
Testen
TL;DR
10 Request, Response und Middleware
Der Lebenszyklus des Request-Objekts
Bootstrapping der Anwendung
Service Provider
Das Request-Objekt
Zugriff auf das Request-Objekt in Laravel
Informationen aus einem Request erhalten
Das Response-Objekt
Response-Objekte in Controllern erzeugen und verwenden
Spezialisierte Antworttypen
Laravel und Middleware
Eine Einführung in Middleware
Benutzerdefinierte Middleware erstellen
Middleware binden
Parameter an die Middleware übergeben
Vertrauenswürdige Proxys
Testen
TL;DR
11 Der Container
Eine kurze Einführung in die Injektion von Abhängigkeiten
Abhängigkeitsinjektion und Laravel
Der globale Helfer app()
Wie ist der Container verdrahtet?
Klassen an den Container binden
Bindung mittels Closure
Bindung von Singletons, Aliasen und Instanzen
Binden einer konkreten Instanz an ein Interface
Kontextuelle Bindung
Konstruktor-Injektion in Laravel-Framework-Dateien
Methoden-Injektion
Fassaden und Container
Wie Fassaden funktionieren
Echtzeit-Fassaden
Service Provider
Testen
TL;DR
12 Testen
Grundlagen des Testens
Tests benennen
Die Testumgebung
Vier spezielle Traits beim Testen
RefreshDatabase
WithoutMiddleware
DatabaseMigrations
DatabaseTransactions
Einfache Unit-Tests
Anwendungstests: So funktionieren sie
Die TestCase-Klasse
HTTP-Tests
Testen von Standardseiten mit $this->get() und anderen HTTP-Aufrufen
Testen von JSON-APIs mit $this->getJson() und anderen JSON-HTTP-Aufrufen
Behauptungen bezüglich $response
Authentifizierung von Antworten
Weitere Anpassungen für HTTP-Tests
Behandlung von Ausnahmen in Anwendungstests
Datenbank-Tests
Verwendung von Modellfabriken
Seeding in Tests
Testen anderer Laravel-Features
Ereignisse faken
Bus- und Warteschlangen-Fakes
Mails faken
Benachrichtigungen faken
Dateioperationen faken
Mocking
Eine kurze Einführung ins Mocken
Eine kurze Einführung in Mockery
Andere Fassaden faken
Artisan-Befehle testen
Behauptungen bezüglich der Artisan-Befehlssyntax
Browser-Tests
Auswahl des Werkzeugs
Testen mit Dusk
TL;DR
13 APIs schreiben
Die Grundlagen REST-ähnlicher JSON-APIs
Controller-Organisation und JSON-Antworten
Header lesen und senden
Response-Header senden
Request-Header lesen
Paginierung
Sortieren und Filtern
Sortieren der API-Ergebnisse
Filtern der API-Ergebnisse
Ergebnisse transformieren
Schreiben eines eigenen Transformators
Verschachtelung und Beziehungen mit benutzerdefinierten Transformatoren
API-Ressourcen
Erstellen einer Ressourcen-Klasse
Ressourcen-Collections
Verschachtelte Beziehungen
Paginierung in API-Ressourcen verwenden
Bedingtes Anwenden von Attributen
Weitere Anpassungen für API-Ressourcen
API-Authentifizierung mit Laravel Passport
Eine kurze Einführung in OAuth 2.0
Passport installieren
Die Passport-API
Passports Grant-Typen
Clients und Tokens mit der Passport-API und Vue-Komponenten verwalten
Passport-Scopes
Bereitstellen von Passport
API-Token-Authentifizierung
Benutzerdefinierte 404-Antworten
Triggern der Fallback-Route
Testen
Passport testen
TL;DR
14 Daten speichern und abrufen
Lokale und Cloud-basierte Datei-Manager
Konfiguration des Dateizugriffs
Verwendung der Storage-Fassade
Zusätzliche Flysystem-Provider hinzufügen
Grundlagen von Datei-Uploads und -Handhabung
Einfache Datei-Downloads
Sessions
Zugriff auf die Session
Methoden, die für Session-Instanzen verfügbar sind
Flash-Sitzungsspeicher
Cache
Zugriff auf den Cache
Methoden, die für Cache-Instanzen verfügbar sind
Cookies
Cookies in Laravel
Auf Cookies zugreifen
Logging
Wann und warum man Logs verwenden sollte
In Logs schreiben
Log-Kanäle
Volltextsuche mit Laravel Scout
Scout installieren
Ein Modell für die Indexierung kennzeichnen
Einen Index durchsuchen
Warteschlangen und Scout
Operationen ohne Indizierung durchführen
Bedingt ausgeführte Indizierung
Manuelles Auslösen der Indizierung im Code
Manuelles Auslösen der Indizierung über die Kommandozeile
Testen
Dateien speichern
Session
Cache
Cookies
Logging
Scout
TL;DR
15 E-Mail und Benachrichtigungen
E-Mail
»Klassische« E-Mail
E-Mails als »Mailable«
E-Mail-Vorlagen
In build() verfügbare Methoden
Anhänge und Inline-Bilder
Markdown-Mailables
Darstellung von Mailables im Browser
Warteschlangen
Lokale Entwicklung
Benachrichtigungen
Definieren der via()-Methode für die zu benachrichtigenden Empfänger
Senden von Benachrichtigungen
Benachrichtigungen in Warteschlangen stellen
Laravels integrierte Benachrichtigungstypen
Testen
E-Mail
Benachrichtigungen
TL;DR
16 Queues, Jobs, Events, Broadcasting und der Scheduler
Warteschlangen
Warum Warteschlangen?
Grundlegende Warteschlangen-Konfiguration
Warteschlangen-Jobs
Ausführen eines Queue-Workers
Fehlerbehandlung
Kontrolle der Warteschlange
Warteschlange für andere Funktionen
Laravel Horizon
Ereignisse
Ein Ereignis auslösen
Nach einem Ereignis »lauschen«
Broadcasting von Ereignissen über WebSockets und Laravel Echo
Konfiguration und Einrichtung
Übertragung eines Ereignisses
Empfang der Nachricht
Fortgeschrittene Broadcasting-Werkzeuge
Laravel Echo (die JavaScript-Seite)
Scheduler
Verfügbare Aufgabentypen
Verfügbare Zeitangaben
Definieren von Zeitzonen für geplante Befehle
Blockierung und Überlappung
Output von Aufgaben handhaben
Aufgaben-Hooks
Testen
TL;DR
17 Helfer und Collections
Helfer
Arrays
Zeichenketten
Anwendungspfade
URLs
Verschiedenes
Collections
Die Grundlagen
Ein paar Methoden
TL;DR
18 Das Laravel-Ökosystem
Tools, die in diesem Buch behandelt werden
Valet
Homestead
Der Laravel-Installer
Mix
Dusk
Passport
Horizon
Echo
Tools, die in diesem Buch nicht behandelt werden
Forge
Envoyer
Cashier
Socialite
Nova
Spark
Lumen
Envoy
Telescope
Vapor
Weitere Ressourcen
Fußnoten
Glossar
Index
Über den Autor
Kolophon
← Prev
Back
Next →
← Prev
Back
Next →