laravel - riptutorial.com · inhaltsverzeichnis Über 1 kapitel 1: erste schritte mit laravel 2...

226
Laravel #laravel

Upload: leminh

Post on 20-Aug-2019

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Laravel

#laravel

Page 2: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Inhaltsverzeichnis

Über 1

Kapitel 1: Erste Schritte mit Laravel 2

Bemerkungen 2

Laravel StackOverflow Slack Community 2

Vorgestelltes Tutorial 2

Beitragsrichtlinien 2

Beitragsstilhandbuch 2

Über Laravel 2

Haupteigenschaften 2

MVC 2

Schablonen-Engine 3

Routing und Middleware 3

Handwerker 3

Eloquent ORM 3

Handhabung des Events 3

Versionen 3

Examples 4

Willkommen in der Laravel-Tag-Dokumentation! 4

Starterhandbuch 4

Fertig machen 5

Laravel-Ansichten 5

Kapitel 2: Ändern Sie das Standardroutingverhalten in Laravel 5.2.31 + 7

Syntax 7

Parameter 7

Bemerkungen 7

Examples 7

Hinzufügen von API-Routen mit anderer Middleware und Beibehalten der Standard-Web-Middlewa 7

Kapitel 3: Anfragen 9

Examples 9

Eingabe erhalten 9

Page 3: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 4: Anfragen 10

Examples 10

Fordern Sie eine Instanz der HTTP-Anforderung an 10

Instanz mit anderen Parametern von Routen in Controller-Methode anfordern 10

Kapitel 5: Aufgabenplanung 12

Examples 12

Eine Aufgabe erstellen 12

Aufgabe zur Verfügung stellen 13

Planen Sie Ihre Aufgabe 14

Festlegen, dass der Scheduler ausgeführt wird 15

Kapitel 6: Aussaat 16

Bemerkungen 16

Examples 16

Daten einfügen 16

DB Facade verwenden 16

Über das Instantiieren eines Modells 16

Verwenden Sie die Create-Methode 16

Mit fabrik 17

&& alte Daten löschen und Auto-Inkrement zurücksetzen 17

Andere Sämaschinen anrufen 17

Seeder anlegen 17

Sichere Nachsaat 18

Kapitel 7: Authentifizierung 20

Examples 20

Multi-Authentifizierung 20

Kapitel 8: Benennen von Dateien beim Hochladen mit Laravel unter Windows 24

Parameter 24

Examples 24

Zeitstempel-Dateinamen für von Benutzern hochgeladene Dateien generieren. 24

Kapitel 9: Benutzerdefinierte Helferfunktion 26

Einführung 26

Page 4: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Bemerkungen 26

Examples 26

document.php 26

HelpersServiceProvider.php 26

Benutzen 27

Kapitel 10: Beobachter 28

Examples 28

Einen Beobachter erstellen 28

Kapitel 11: Berechtigungen für die Speicherung 30

Einführung 30

Examples 30

Beispiel 30

Kapitel 12: Beredt 31

Einführung 31

Bemerkungen 31

Examples 31

Einführung 31

Unterthemen-Navigation 32

Anhalten 32

Löschen 33

Weiches Löschen 34

Primärschlüssel und Zeitstempel ändern 35

Werfen Sie 404, wenn die Entität nicht gefunden wurde 36

Klonen von Modellen 36

Kapitel 13: Blade-Vorlagen 38

Einführung 38

Examples 38

Ansichten: Einführung 38

Kontrollstrukturen 39

Conditionals 39

"If" -Anweisungen 39

"Es sei denn" Aussagen 39

Page 5: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Schleifen 40

'While-Schleife 40

Foreach-Schleife 40

"Forelse" -Schleife 40

Echo von PHP-Ausdrücken 41

Eine Variable wiederholen 41

Echo eines Elements in einem Array 42

Echo einer Objekteigenschaft 42

Das Ergebnis eines Funktionsaufrufs wiederholen 42

Existenz prüfen 42

Rohe Echos 42

Einschließlich Teilansichten 43

Vererbung des Layouts 44

Daten für alle Ansichten freigeben 45

View :: share verwenden 45

View :: composer verwenden 45

Closure-basierter Komponist 45

Klassenbasierter Komponist 46

Beliebigen PHP-Code ausführen 46

Kapitel 14: Controller 48

Einführung 48

Examples 48

Grundsteuerungen 48

Controller-Middleware 48

Ressourcencontroller 49

Beispiel für einen Resource Controller 49

Vom Ressourcen-Controller gehandhabte Aktionen 51

Kapitel 15: Cron-Grundlagen 52

Einführung 52

Examples 52

Cron-Job erstellen 52

Page 6: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 16: CustomException-Klasse in Laravel 53

Einführung 53

Examples 53

CustomException-Klasse in Laravel 53

Kapitel 17: Dateisystem / Cloud-Speicher 55

Examples 55

Aufbau 55

Grundlegende Verwendung 55

Benutzerdefinierte Dateisysteme 57

Erstellen eines symbolischen Links in einem Webserver mit SSH 58

Kapitel 18: Datenbank 59

Examples 59

Mehrere Datenbankverbindungen 59

Kapitel 19: Datenbank Seeding 63

Examples 63

Seeder ausführen 63

Einen Samen erstellen 63

Daten mit einem Seeder einfügen 63

Einfügen von Daten mit einer Modellfabrik 64

Seeding mit MySQL Dump 64

Verwenden von Faker und ModelFactories zum Generieren von Seeds 65

Kapitel 20: Datenbankmigrationen 68

Examples 68

Migrationen 68

Die Migrationsdateien 69

Migrationsdateien generieren 69

Innerhalb einer Datenbankmigration 70

Migrationen ausführen 71

Migrationen rückgängig machen 71

Kapitel 21: Dienstleistungen 73

Examples 73

Einführung 73

Page 7: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 22: Dienstleistungen 78

Examples 78

Binden einer Schnittstelle an die Implementierung 78

Instanz binden 78

Binden eines Singleton an den Service-Container 78

Einführung 79

Verwenden des Service-Containers als Abhängigkeitsinjektionscontainer 79

Kapitel 23: Domainübergreifende Anfrage 80

Examples 80

Einführung 80

CorsHeaders 80

Kapitel 24: Einführung in Laravel-5.2 82

Einführung 82

Bemerkungen 82

Examples 82

Installation oder Setup 82

Installieren Sie das Laravel 5.1 Framework auf Ubuntu 16.04, 14.04 und LinuxMint 82

Kapitel 25: Einführung in Laravel-5.3 86

Einführung 86

Examples 86

Die Variable $ loop 86

Kapitel 26: Eloquent: Accessors & Mutators 87

Einführung 87

Syntax 87

Examples 87

Definieren eines Accessors 87

Accessor bekommen: 87

Mutator definieren 88

Kapitel 27: Eloquent: Beziehung 89

Examples 89

Fragen zu Beziehungen abfragen 89

Page 8: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Verwandte Modelle einfügen 89

Einführung 90

Beziehungstypen 90

Eins zu vielen 90

Eins zu eins 91

Zuordnung zwischen zwei Modellen (Beispiel: User und Phone ) 91

Erläuterung 92

Viel zu viel 92

Polymorph 93

Viel zu viel 95

Kapitel 28: Eloquent: Modell 98

Examples 98

Ein Modell erstellen 98

Modellerstellung 98

Speicherort der Modelldatei 99

Modellkonfiguration 100

Aktualisieren Sie ein vorhandenes Modell 101

Kapitel 29: Entfernen Sie public von URL in Laravel 102

Einführung 102

Examples 102

Wie geht das? 102

Entfernen Sie die Öffentlichkeit aus der URL 102

Kapitel 30: Erste Schritte mit Laravel-5.3 103

Bemerkungen 103

Examples 103

Laravel installieren 103

Über den Laravel Installer 103

Über Composer Create-Project 104

Konfiguration 104

Serveranforderungen 104

Lokaler Entwicklungsserver 105

Hallo Weltbeispiel (Basic) und mit einer Ansicht 105

Page 9: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Hallo Weltbeispiel (Basic) 106

Webserver-Konfiguration für hübsche URLs 107

Kapitel 31: Fehlerbehandlung 108

Bemerkungen 108

Examples 108

Fehlerbericht-E-Mail senden 108

Anwendungsweite ModelNotFoundException abfangen 109

Kapitel 32: Formularanforderung (en) 110

Einführung 110

Syntax 110

Bemerkungen 110

Examples 110

Anfragen erstellen 110

Formularanforderung verwenden 110

Umleitungen nach der Validierung behandeln 111

Kapitel 33: Genehmigung 113

Einführung 113

Examples 113

Gates verwenden 113

Aktionen mit Gates autorisieren 113

Richtlinien 114

Richtlinien schreiben 114

Aktionen mit Richtlinien autorisieren 114

Kapitel 34: Handwerker 116

Syntax 116

Parameter 116

Examples 118

Einführung 118

Listet alle registrierten Routen auf, die mit mehreren Methoden gefiltert wurden 119

Ausführen von Laravel Artisan-Befehlen mit PHP-Code 119

Neuen handwerklichen Befehl erstellen und registrieren 119

Kapitel 35: Häufige Probleme und schnelle Korrekturen 121

Page 10: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Einführung 121

Examples 121

TokenMisMatch-Ausnahme 121

Kapitel 36: Helfer 122

Einführung 122

Examples 122

Array-Methoden 122

String-Methoden 122

Pfad mehods 122

URLs 123

Kapitel 37: HTML und Form Builder 124

Examples 124

Installation 124

Kapitel 38: Installation 125

Examples 125

Installation 125

Über den Komponisten 125

Über den Laravel Installer 125

Anwendung ausführen 126

Verwendung eines anderen Servers 126

Bedarf 127

Hello World-Beispiel (Verwenden von Controller und View) 128

Hallo Weltbeispiel (Basic) 129

Installation mit LaraDock (Laravel Homestead für Docker) 130

Installation 130

Grundlegende Verwendung 130

Kapitel 39: Installationsanleitung 132

Bemerkungen 132

Examples 132

Installation 132

Hallo Weltbeispiel (Basic) 133

Hallo Weltbeispiel mit Ansichten und Controller 133

Page 11: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Die Aussicht 133

Der Controller 133

Der Router 134

Kapitel 40: Kammerdiener 135

Einführung 135

Syntax 135

Parameter 135

Bemerkungen 135

Examples 135

Valet-Link 135

Parkservice 136

Valet-Links 136

Installation 136

Valet Domain 137

Installation (Linux) 137

Kapitel 41: Kassierer 139

Bemerkungen 139

Examples 139

Streifen-Setup 139

Kapitel 42: Konstanten 141

Examples 141

Beispiel 141

Kapitel 43: Laravel Docker 142

Einführung 142

Examples 142

Laradock verwenden 142

Kapitel 44: Laravel-Pakete 143

Examples 143

Laravel-Ide-Helfer 143

Laravel-Datentabellen 143

Interventions-Bild 143

Laravel-Generator 143

Page 12: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Laravel Socialite 143

Offizielle Pakete 143

Kassierer 143

Gesandte 144

Reisepass 144

Erkunden 144

Prominente 144

Kapitel 45: Lumen-Rahmen 146

Examples 146

Erste Schritte mit Lumen 146

Kapitel 46: Mail 147

Examples 147

Grundlegendes Beispiel 147

Kapitel 47: Makros in einer eloquenten Beziehung 148

Einführung 148

Examples 148

Wir können eine Instanz der hasMany-Beziehung abrufen 148

Kapitel 48: Mehrere DB-Verbindungen in Laravel 149

Examples 149

Erste Schritte 149

Schema Builder verwenden 149

DB Query Builder verwenden 150

Eloquent verwenden 150

Aus der Laravel-Dokumentation 150

Kapitel 49: Middleware 152

Einführung 152

Bemerkungen 152

Examples 152

Middleware definieren 152

Vorher nach After Middleware 153

Routen-Middleware 153

Page 13: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 50: Nützliche Links 155

Einführung 155

Examples 155

Laravel Ökosystem 155

Bildung 155

Podcasts 155

Kapitel 51: Prominente 157

Examples 157

Installation 157

Aufbau 157

Grundnutzung - Fassade 157

Grundnutzung - Abhängigkeitsinjektion 158

Socialite für API - Stateless 158

Kapitel 52: Richtlinien 160

Examples 160

Richtlinien erstellen 160

Kapitel 53: Routenmodellbindung 161

Examples 161

Implizite Bindung 161

Explizite Bindung 161

Kapitel 54: Routing 163

Examples 163

Grundlegendes Routing 163

Routen, die auf eine Controller-Methode zeigen 163

Eine Route für mehrere Verben 163

Routengruppen 164

Benannte Route 164

URL mit benannter Route generieren 164

Routenparameter 165

Optionaler Parameter 165

Erforderlicher Parameter 165

Page 14: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Zugriff auf den Parameter in der Steuerung 165

Fange alle Strecken 166

Alle Routen abfangen, außer bereits definiert 166

Routen werden in der Reihenfolge abgeglichen, in der sie deklariert sind 166

Routen ohne Berücksichtigung der Groß- und Kleinschreibung 166

Kapitel 55: Sammlungen 168

Syntax 168

Bemerkungen 168

Examples 168

Sammlungen erstellen 168

woher() 168

Verschachtelung 169

Ergänzungen 169

Verwenden von Get zum Nachschlagen von Werten oder zum Rücksetzen des Standardwerts 169

Verwenden von Enthält, um zu überprüfen, ob eine Sammlung bestimmte Bedingungen erfüllt 170

Verwenden von Pluck, um bestimmte Werte aus einer Sammlung zu extrahieren 170

Mit Map können Sie jedes Element in einer Sammlung bearbeiten 171

Verwenden Sie sum, avg, min oder max für eine Sammlung für statistische Berechnungen 171

Eine Sammlung sortieren 172

Sortieren() 172

Sortiere nach() 172

SortByDesc () 173

Verwenden Sie reduzieren () 173

Verwenden von macro () zum Erweitern von Sammlungen 175

Verwenden der Array-Syntax 175

Kapitel 56: Seitennummerierung 177

Examples 177

Paginierung in Laravel 177

Ändern der Seitenumbrüche 178

Kapitel 57: Sparkpost-Integration mit Laravel 5.4 180

Einführung 180

Page 15: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Examples 180

Beispieldaten für die .env-Datei 180

Kapitel 58: Stellen Sie die Laravel 5-App auf Shared Hosting unter Linux Server bereit 181

Bemerkungen 181

Examples 181

Laravel 5 App für Shared Hosting auf Linux Server 181

Kapitel 59: Testen 184

Examples 184

Einführung 184

Testen Sie ohne Middleware und mit einer frischen Datenbank 184

Datenbanktransaktionen für mehrere Datenbankverbindungen 185

Testen der Einrichtung unter Verwendung der Speicherdatenbank 185

Aufbau 186

Kapitel 60: Token Mismatch Error in AJAX 187

Einführung 187

Examples 187

Setup-Token im Header 187

Token aktivieren Etikett 187

Überprüfen Sie den Speicherpfad und die Berechtigung für die Sitzung 187

Verwenden Sie das Feld _token für Ajax 188

Kapitel 61: Validierung 189

Parameter 189

Examples 190

Basisbeispiel 190

Array-Überprüfung 191

Andere Validierungsansätze 192

Einzelformular-Anforderungsklasse für POST, PUT, PATCH 194

Fehlermeldungen 195

Anpassen von Fehlermeldungen 195

Anpassen von Fehlermeldungen innerhalb einer Request-Klasse 196

Fehlermeldungen anzeigen 197

Benutzerdefinierte Validierungsregeln 197

Page 16: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 62: Veranstaltungen und Zuhörer 199

Examples 199

Verwenden von Ereignissen und Listenern zum Senden von E-Mails an einen neuen registrierte 199

Kapitel 63: Verwenden Sie Feldnamen in Eloquent 201

Kapitel 64: Verzeichnisaufbau 202

Examples 202

Ändern Sie das Standard-App-Verzeichnis 202

Anwendungsklasse überschreiben 202

Die neue Klasse aufrufen 202

Komponist 203

Ändern Sie das Controllerverzeichnis 203

Kapitel 65: Warteschlangen 204

Einführung 204

Examples 204

Anwendungsfälle 204

Warteschlangentreiberkonfiguration 204

sync 204

database 204

sqs 205

iron 205

redis 205

beanstalkd 205

null 205

Credits 206

Page 17: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Über

You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: laravel

It is an unofficial and free Laravel ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official Laravel.

The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.

Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]

https://riptutorial.com/de/home 1

Page 18: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 1: Erste Schritte mit Laravel

Bemerkungen

Laravel StackOverflow Slack Community

Demnächst

Vorgestelltes Tutorial

Erste Schritte mit Laravel

Beitragsrichtlinien

Demnächst

Beitragsstilhandbuch

Demnächst

Über Laravel

Laravel wurde von Taylor Otwell als kostenloses Open-Source- PHP- Webframework entwickelt und soll den Entwicklungsprozess von Webanwendungen vereinfachen und beschleunigen.

Er folgt dem Modell-View-Controller-Modell ( MVC ) sowie dem Kodierungsstandard PSR-2 und dem Autoloading-Standard PSR-4 .

Das Ausführen einer Test Driven Development ( TDD ) in Laravel macht Spaß und ist einfach zu implementieren.

Hosted on GitHub und verfügbar auf https://github.com/laravel/laravel , bietet Laravel einer Mikro-Dienste - Architektur, es enorm erweiterbar und dies macht, mit Leichtigkeit, mit der Verwendung von maßgeschneiderten und oder bestehenden Dritt Pakete.

Haupteigenschaften

MVC

https://riptutorial.com/de/home 2

Page 19: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Laravel verwendet das MVC-Modell, daher gibt es drei Kernkomponenten des Frameworks, die zusammenarbeiten: Modelle, Ansichten und Controller. Controller sind der Hauptteil, an dem die meiste Arbeit erledigt wird. Sie stellen eine Verbindung zu Modellen her, um Daten abzurufen, zu erstellen oder zu aktualisieren und die Ergebnisse in Ansichten anzuzeigen, die die tatsächliche HTML-Struktur der Anwendung enthalten.

Schablonen-Engine

Laravel wird mit einer als Blade bekannten Templating Engine ausgeliefert. Blade ist recht einfach zu bedienen und dennoch leistungsstark. Eine Funktion, die die Blade-Templating-Engine nicht mit anderen beliebten teilt, ist ihre Freizügigkeit. Ermöglicht die Verwendung von normalem PHP-Code in Blade-Templatordateien.

Es ist wichtig anzumerken, dass Blade-Template-Engine-Dateien .blade direkt vor der üblichen .php Datei an die .blade angehängt wurden. .php ist nichts anderes als die eigentliche Dateierweiterung. Daher ist .blade.php die resultierende Dateierweiterung für Blade-Vorlagendateien. Blade-Vorlagen-Engine-Dateien werden im Verzeichnis resources / views gespeichert.

Routing und Middleware

Sie können die URLs Ihrer Anwendung mithilfe von Routen definieren. Diese Routen können variable Daten enthalten, sich mit Controllern verbinden oder in Middlewares eingeschlossen werden. Middelware ist ein Mechanismus zum Filtern von HTTP-Anforderungen. Sie können verwendet werden, um mit Anforderungen zu interagieren, bevor sie die Controller erreichen, und können somit Anforderungen ändern oder ablehnen.

Handwerker

Artisan ist das Befehlszeilenwerkzeug, mit dem Sie Teile von Laravel steuern können. Es gibt eine Vielzahl von Befehlen, um Modelle, Controller und andere für die Entwicklung benötigte Ressourcen zu erstellen. Sie können auch eigene Befehle schreiben, um das Artisan-Befehlszeilentool zu erweitern.

Eloquent ORM

Um Ihre Modelle mit verschiedenen Arten von Datenbanken zu verbinden, bietet Laravel ein eigenes ORM mit einer Vielzahl von Funktionen, mit denen Sie arbeiten können. Das Framework bietet auch Migration und Seeding sowie Rollbacks.

Handhabung des Events

Das Framework kann Ereignisse in der gesamten Anwendung verarbeiten. Sie können Ereignis-Listener und Ereignishandler erstellen, die denen von NodeJs ähneln.

Versionen

https://riptutorial.com/de/home 3

Page 20: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Ausführung Veröffentlichungsdatum

1,0 2011-06-09

2,0 2011-11-24

3,0 2012-02-22

3.1 2012-03-27

3.2 2012-05-22

4,0 2013-05-28

4.1 2013-12-12

4.2 2014-06-01

5,0 2015-02-04

5,1 (LTS) 2015-06-09

5.2 2015-12-21

5.3 2016-08-24

5.4 2017-01-24

Examples

Willkommen in der Laravel-Tag-Dokumentation!

Laravel ist ein bekanntes PHP-Framework. Hier erfahren Sie alles über Laravel. Angefangen von einfach zu wissen, was objektorientierte Programmierung ist, bis zum fortgeschrittenen Laravel-Paketentwicklungsthema.

Wie bei jedem anderen Stackoverflow-Dokumentations-Tag handelt es sich um eine von der Community betriebene Dokumentation. Wenn Sie bereits Erfahrungen mit Laravel gesammelt haben, teilen Sie Ihr Wissen mit eigenen Themen oder Beispielen! Vergessen Sie nicht, unseren Beitragsstil-Leitfaden zu diesem Thema zu lesen, um mehr über den Beitrag und den von uns erstellten Stilführer zu erfahren, um sicherzustellen, dass wir den Menschen, die mehr über Laravel erfahren möchten, die beste Erfahrung bieten.

Mehr als das, wir sind sehr froh, dass Sie kommen und hoffen, dass wir Sie oft hier sehen können!

Starterhandbuch

Das Starterhandbuch ist eine benutzerdefinierte Navigation, die wir selbst bestellt haben, um das Durchsuchen von Themen für Anfänger zu erleichtern. Diese Navigation ist nach

https://riptutorial.com/de/home 4

Page 21: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Schwierigkeitsgrad sortiert.

Fertig machen

Installation

Laravel-Ansichten

Blade: Einführung

Blade: Variablen und Kontrollstrukturen

Oder

Installation von hier aus

Holen Sie sich den Komponisten von hier und installieren Sie ihn1.

Holen Sie sich Wamp von hier aus , installieren Sie es und setzen Sie die Umgebungsvariable von PHP

2.

Holen Sie sich den Pfad zu www und geben Sie den Befehl ein:3.

composer create-project --prefer-dist laravel/laravel projectname

Um eine bestimmte Laravel-Version zu installieren, rufen Sie den Pfad zu www und geben Sie folgenden Befehl ein:

composer create-project --prefer-dist laravel/laravel=DESIRED_VERSION projectname

Oder

Über den Laravel Installer

Laden Sie zunächst das Laravel-Installationsprogramm mit Composer herunter:

composer global require "laravel/installer"

$HOME/.composer/vendor/bin Sie sicher, dass das $HOME/.composer/vendor/bin (oder das entsprechende Verzeichnis für Ihr Betriebssystem) in $ PATH laravel ist, damit die laravel Datei von laravel von Ihrem System gefunden werden kann.

Nach der Installation erstellt der laravel new Befehl laravel new eine neue Laravel-Installation in dem von Ihnen angegebenen Verzeichnis. Zum Beispiel laravel new blog von Laravel ein Verzeichnis mit dem Namen blog das eine neue Laravel-Installation mit allen bereits installierten Abhängigkeiten von Laravel enthält:

laravel new blog

https://riptutorial.com/de/home 5

Page 22: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Erste Schritte mit Laravel online lesen: https://riptutorial.com/de/laravel/topic/794/erste-schritte-mit-laravel

https://riptutorial.com/de/home 6

Page 23: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 2: Ändern Sie das Standardroutingverhalten in Laravel 5.2.31 +

Syntax

public function map (Router $ router) // Definieren Sie die Routen für die Anwendung.•geschützte Funktion mapWebRoutes (Router $ router) // Definieren Sie die "Web" -Routen für die Anwendung.

Parameter

Parameter Header

Router $ router \ Illuminate \ Routing \ Router $ router

Bemerkungen

Middleware bedeutet, dass jeder Anruf auf einer Route die Middleware durchläuft, bevor er den routenspezifischen Code trifft. In Laravel wird die Web-Middleware verwendet, um beispielsweise die Sitzungsbehandlung oder die Überprüfung des csrf-Tokens sicherzustellen.

Es gibt standardmäßig auch andere Middlewares wie auth oder api. Sie können auch leicht Ihre eigene Middleware erstellen.

Examples

Hinzufügen von API-Routen mit anderer Middleware und Beibehalten der Standard-Web-Middleware

Seit der Laravel-Version 5.2.31 wird die Web-Middleware standardmäßig innerhalb des RouteServiceProvider angewendet ( https://github.com/laravel/laravel/commit/5c30c98db96459b4cc878d085490e4677b0b67ed).

In App / Providers / RouteServiceProvider.php finden Sie die folgenden Funktionen, die die Middleware auf jeder Route in Ihrer App / Http / routes.php anwenden

public function map(Router $router) { $this->mapWebRoutes($router); } // ... protected function mapWebRoutes(Router $router)

https://riptutorial.com/de/home 7

Page 24: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

{ $router->group([ 'namespace' => $this->namespace, 'middleware' => 'web', ], function ($router) { require app_path('Http/routes.php'); }); }

Wie Sie sehen, wird das Middleware- Web angewendet. Sie könnten das hier ändern. Sie können jedoch auch problemlos einen weiteren Eintrag hinzufügen, um Ihre API-Routen beispielsweise in eine andere Datei (z. B. routes-api.php) zu kopieren.

public function map(Router $router) { $this->mapWebRoutes($router); $this->mapApiRoutes($router); } protected function mapWebRoutes(Router $router) { $router->group([ 'namespace' => $this->namespace, 'middleware' => 'web', ], function ($router) { require app_path('Http/routes.php'); }); } protected function mapApiRoutes(Router $router) { $router->group([ 'namespace' => $this->namespace, 'middleware' => 'api', ], function ($router) { require app_path('Http/routes-api.php'); }); }

Mit diesem können Sie Ihre API-Routen leicht von Ihren Anwendungsrouten trennen, ohne den chaotischen Gruppen-Wrapper in Ihrer route.php

Ändern Sie das Standardroutingverhalten in Laravel 5.2.31 + online lesen: https://riptutorial.com/de/laravel/topic/4285/andern-sie-das-standardroutingverhalten-in-laravel-5-2-31-plus

https://riptutorial.com/de/home 8

Page 25: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 3: Anfragen

Examples

Eingabe erhalten

Die Eingabe der Illuminate\Http\Request in den Controller erfolgt in erster Linie durch Eingabe. Danach gibt es zahlreiche Möglichkeiten, auf die Daten zuzugreifen. 4 davon sind im folgenden Beispiel aufgeführt.

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { // Returns the username value $name = $request->input('username'); // Returns the username value $name = $request->username; // Returns the username value $name = request('username'); // Returns the username value again $name = request()->username; } }

Bei Verwendung der input kann auch ein Standardwert hinzugefügt werden, wenn die Anforderungseingabe nicht verfügbar ist

$name = $request->input('username', 'John Doe');

Anfragen online lesen: https://riptutorial.com/de/laravel/topic/3076/anfragen

https://riptutorial.com/de/home 9

Page 26: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 4: Anfragen

Examples

Fordern Sie eine Instanz der HTTP-Anforderung an

Um eine Instanz einer HTTP-Anforderung zu erhalten, muss die Klasse Illuminate\Http\Request entweder im Konstruktor oder in der Methode des Controllers als Typhinweis angegeben werden.

Beispielcode:

<?php namespace App\Http\Controllers; /* Here how we illuminate the request class in controller */ use Illuminate\Http\Request; use Illuminate\Routing\Controller; class PostController extends Controller { /** * Store a new post. * * @param Request $request * @return Response */ public function store(Request $request) { $name = $request->input('post_title'); /* * so typecasting Request class in our method like above avails the * HTTP GET/POST/PUT etc method params in the controller to use and * manipulate */ } }

Instanz mit anderen Parametern von Routen in Controller-Methode anfordern

Manchmal müssen wir Routenparameter akzeptieren sowie auf die HTTP-Anfrageparameter zugreifen. Wir können immer noch die Klasse "Requests" in den Laravel-Controller eingeben und dies wie unten beschrieben erreichen

ZB haben wir eine Route, die einen bestimmten Post so aktualisiert (Pass ID i Route)

Route::put('post/{id}', 'PostController@update');

Auch da Benutzer andere Bearbeitungsformularfelder bearbeitet haben, stehen diese in HTTP

https://riptutorial.com/de/home 10

Page 27: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Request zur Verfügung

So können Sie in unserer Methode auf beide zugreifen

public function update(Request $request,$id){ //This way we have $id param from route and $request as an HTTP Request object }

Anfragen online lesen: https://riptutorial.com/de/laravel/topic/4929/anfragen

https://riptutorial.com/de/home 11

Page 28: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 5: Aufgabenplanung

Examples

Eine Aufgabe erstellen

Sie können mit Artisan eine Aufgabe (Konsolenbefehl) in Laravel erstellen. Von Ihrer Befehlszeile aus:

php artisan make:console MyTaskName

Dadurch wird die Datei in app / Console / Commands / MyTaskName.php erstellt . Es wird so aussehen:

<?php namespace App\Console\Commands; use Illuminate\Console\Command; class MyTaskName extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'command:name'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { //

https://riptutorial.com/de/home 12

Page 29: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

} }

Einige wichtige Teile dieser Definition sind:

Die $signature -Eigenschaft kennzeichnet Ihren Befehl. Sie können diesen Befehl später über die Befehlszeile mit Artisan ausführen, indem Sie den Befehl php artisan command:name ausführen php artisan command:name (wobei command:name mit der $signature Ihres Befehls übereinstimmt).

Die $description Eigenschaft wird in Artisans Hilfe / Verwendung neben Ihrem Befehl angezeigt, wenn er verfügbar ist.

In der handle() -Methode schreiben Sie den Code für Ihren Befehl.•

Schließlich wird Ihre Aufgabe über Artisan der Befehlszeile zur Verfügung gestellt. Die protected $signature = 'command:name'; Diese Eigenschaft ist die Eigenschaft, die Sie zum Ausführen der Klasse verwenden würden.

Aufgabe zur Verfügung stellen

Sie können Artisan und Ihrer Anwendung eine Aufgabe in der Datei app / Console / Kernel.php zur Verfügung stellen .

Die Kernel Klasse enthält ein Array namens $commands das Ihre Befehle für Ihre Anwendung verfügbar macht.

Fügen Sie Ihrem Array Ihren Befehl hinzu, um ihn Artisan und Ihrer Anwendung zur Verfügung zu stellen.

<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\Inspire::class, Commands\MyTaskName::class // This line makes MyTaskName available ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule)

https://riptutorial.com/de/home 13

Page 30: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

{ } }

Sobald dies geschehen ist, können Sie jetzt über Artisan auf die Befehlszeile zugreifen. Wenn Sie davon ausgehen, dass für den Befehl die $signature -Eigenschaft auf my:task , können Sie den folgenden Befehl ausführen, um Ihre Task auszuführen:

php artisan my:task

Planen Sie Ihre Aufgabe

Wenn Ihr Befehl Ihrer Anwendung zur Verfügung gestellt wird, können Sie mit Laravel die Ausführung in vordefinierten Intervallen planen, genau wie bei einem CRON.

In der Datei app / Console / Kernel.php finden Sie eine schedule , mit der Sie Ihre Aufgabe planen können.

<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\Inspire::class, Commands\MyTaskName::class ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->command('my:task')->everyMinute(); // $schedule->command('my:task')->everyFiveMinutes(); // $schedule->command('my:task')->daily(); // $schedule->command('my:task')->monthly(); // $schedule->command('my:task')->sundays(); } }

Angenommen, die $signature -Unterschrift Ihrer Aufgabe ist my:task Sie können sie wie oben

https://riptutorial.com/de/home 14

Page 31: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

gezeigt mit dem Schedule $schedule Objekt Schedule $schedule . Laravel bietet eine Vielzahl von Möglichkeiten, Ihren Befehl zu planen, wie in den kommentierten Zeilen oben gezeigt.

Festlegen, dass der Scheduler ausgeführt wird

Der Scheduler kann mit dem folgenden Befehl ausgeführt werden:

php artisan schedule:run

Der Scheduler muss jede Minute ausgeführt werden, um korrekt zu funktionieren. Sie können dies einrichten, indem Sie einen cron-Job mit der folgenden Zeile erstellen, in der der Scheduler jede Minute im Hintergrund ausgeführt wird.

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Aufgabenplanung online lesen: https://riptutorial.com/de/laravel/topic/4026/aufgabenplanung

https://riptutorial.com/de/home 15

Page 32: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 6: Aussaat

Bemerkungen

Durch das Seeding von Datenbanken können Sie Daten und allgemeine Testdaten in Ihre Datenbank einfügen. Standardmäßig gibt es eine DatabaseSeeder Klasse unter database/seeds .

Sämaschinen können mit ausgeführt werden

php artisan db:seed

Oder wenn Sie nur eine Klasse bearbeiten möchten

php artisan db:seed --class=TestSeederClass

Wie bei allen handwerklichen Befehlen haben Sie Zugriff auf eine Vielzahl von Methoden, die Sie in der API-Dokumentation finden

Examples

Daten einfügen

Es gibt verschiedene Möglichkeiten, Daten einzufügen:

DB Facade verwenden

public function run() { DB::table('users') ->insert([ 'name' => 'Taylor', 'age' => 21 ]); }

Über das Instantiieren eines Modells

public function run() { $user = new User; $user->name = 'Taylor'; $user->save(); }

Verwenden Sie die Create-Methode

https://riptutorial.com/de/home 16

Page 33: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

public function run() { User::create([ 'name' => 'Taylor', 'age' => 21 ]); }

Mit fabrik

public function run() { factory(App\User::class, 10)->create(); }

&& alte Daten löschen und Auto-Inkrement zurücksetzen

public function run() { DB::table('users')->delete(); DB::unprepared('ALTER TABLE users AUTO_INCREMENT=1;'); factory(App\User::class, 200)->create(); }

Weitere Informationen zum Einfügen / Aktualisieren von Daten finden Sie im Beispiel für persistent .

Andere Sämaschinen anrufen

Innerhalb Ihrer DatabaseSeeder Klasse können Sie andere Sämaschinen aufrufen

$this->call(TestSeeder::class)

Auf diese Weise können Sie eine Datei aufbewahren, in der Sie Ihre Sämaschinen leicht finden können. Beachten Sie, dass Sie die Reihenfolge Ihrer Anrufe in Bezug auf Fremdschlüsseleinschränkungen beachten müssen. Sie können nicht auf eine Tabelle verweisen, die noch nicht existiert.

Seeder anlegen

Zum Erstellen von Sämaschinen können Sie den Befehl make:seeder Artisan verwenden. Alle generierten Setzer werden im database/seeds Verzeichnis abgelegt.

$ php artisan make:seeder MoviesTableSeeder

Erzeugte Seeders enthalten eine Methode: run . Sie können mit dieser Methode Daten in Ihre Datenbank einfügen.

https://riptutorial.com/de/home 17

Page 34: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class MoviesTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { App\Movie::create([ 'name' => 'A New Hope', 'year' => '1977' ]); App\Movie::create([ 'name' => 'The Empire Strikes Back', 'year' => '1980' ]); } }

Im Allgemeinen möchten Sie alle Sämaschinen innerhalb der DatabaseSeeder Klasse aufrufen.

Wenn Sie mit dem Schreiben der Sämaschinen fertig sind, verwenden Sie den Befehl db:seed . Dadurch wird die run Funktion von DatabaseSeeder run .

$ php artisan db:seed

Sie können auch angeben, dass eine bestimmte Seeder-Klasse mit der Option --class einzeln ausgeführt werden --class .

$ php artisan db:seed --class=UserSeeder

Wenn Sie alle Migrationen rückgängig machen und erneut ausführen möchten, und dann erneut starten:

$ php artisan migrate:refresh --seed

Der Befehl migrate:refresh --seed ist eine Verknüpfung zu diesen 3 Befehlen:

$ php artisan migrate:reset # rollback all migrations $ php artisan migrate # run migrations $ php artisan db:seed # run seeders

Sichere Nachsaat

Möglicherweise möchten Sie Ihre Datenbank erneut säen, ohne die zuvor erstellten Samen zu beeinflussen. Zu diesem Zweck können Sie firstOrCreate in Ihrem Seeder verwenden:

https://riptutorial.com/de/home 18

Page 35: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

EmployeeType::firstOrCreate([ 'type' => 'manager', ]);

Dann können Sie die Datenbank starten:

php artisan db:seed

Wenn Sie später einen anderen Mitarbeitertyp hinzufügen möchten, können Sie den neuen Mitarbeiter in derselben Datei hinzufügen:

EmployeeType::firstOrCreate([ 'type' => 'manager', ]); EmployeeType::firstOrCreate([ 'type' => 'secretary', ]);

Und samen Sie Ihre Datenbank erneut ohne Probleme:

php artisan db:seed

Beachten Sie beim ersten Anruf, dass Sie den Datensatz abrufen, aber nichts dagegen tun.

Aussaat online lesen: https://riptutorial.com/de/laravel/topic/3272/aussaat

https://riptutorial.com/de/home 19

Page 36: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 7: Authentifizierung

Examples

Multi-Authentifizierung

Mit Laravel können Sie mehrere Authentifizierungstypen mit bestimmten Schutzvorrichtungen verwenden.

In Laravel 5.3 unterscheidet sich die Mehrfachauthentifizierung nur wenig von Laravel 5.2

Ich werde in 5.3 erläutern, wie Sie die Multiauthentication-Funktion implementieren

Zunächst benötigen Sie zwei verschiedene Benutzermodelle

cp App/User.php App/Admin.php

Ändern Sie den Klassennamen in Admin und legen Sie den Namespace fest, wenn Sie andere Modelle verwenden. es sollte aussehen

App \ Admin.php

<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class Admin extends Authenticatable { use Notifiable; protected $fillable = ['name', 'email', 'password']; protected $hidden = ['password', 'remember_token']; }

Außerdem müssen Sie eine Migration für den Administrator erstellen

php artisan make:migration create_admins_table

Bearbeiten Sie dann die Migrationsdatei mit den Inhalten der Standardbenutzermigration. Sieht aus wie das

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema;

https://riptutorial.com/de/home 20

Page 37: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

class CreateAdminsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('admins', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); $table->softDeletes(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('admins'); } }

edit config / auth.php

'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], //Add Admin Guard 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ],

und

'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ],

https://riptutorial.com/de/home 21

Page 38: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

//Add Admins Provider 'admins' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ], ],

Beachten Sie, dass wir zwei Einträge hinzufügen. Eine in Guards- Variable Eine in Provider- Variable.

Und so verwenden Sie den anderen Schutz dann "Web"

Meine App \ Http \ Controllers \ Admin \ LoginController

<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Support\Facades\Auth; class AuthController extends Controller { use AuthenticatesUsers; protected $guard = 'admin'; protected $redirectTo = '/admin/'; public function showLoginForm() { return view('admin.login'); } protected function guard() { return Auth::guard($this->guard); } }

das bedarf wenig Erklärung.

Kurz gesagt, mit Auth :: guard ('admin') können Sie auth-Methoden (wie login, logout, register etc.) mit Ihrem admin guard verwenden.

Zum Beispiel

Auth::guard('admin')->login($user)

sucht $ user in der admins-Tabelle und loggt sich mit dem Benutzer ein

Auth::login($user)

https://riptutorial.com/de/home 22

Page 39: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

wird normalerweise mit Benutzertabelle arbeiten. Standardschutz ist in config / Auth.php mit Standardwerten Array angegeben. In frischem Laravel ist es "Web".

Im Controller müssen Sie Methoden von AuthenticatesUsers implementieren, um Ihre benutzerdefinierten Ansichtspfade anzuzeigen. Und Sie müssen andere Funktionen wie Guard implementieren, um Ihre neuen Benutzer-Guards verwenden zu können.

In diesem Beispiel lautet mein Administrator-Login admin / login.blade

Durch die Implementierung der guard () - Funktion zur Rückgabe von Auth :: guard ('admin') funktionieren alle AuthenticatesUsers-Merkmalsmethoden mit dem "admin" - Guard.

In früheren Versionen von Laravel unterscheidet sich dies kaum von 5.3

In 5.2 gibt die getGuard-Funktion die Variable $ guard aus der Klasse und der Hauptfunktion (login) zurück

Auth::guard($guard)->attempt(...)

In 5.3 gibt die guard-Funktion ganze Auth :: guard () zurück und die main-Funktion benutzt sie wie

$this->guard()->attempt(...)

Authentifizierung online lesen: https://riptutorial.com/de/laravel/topic/7051/authentifizierung

https://riptutorial.com/de/home 23

Page 40: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 8: Benennen von Dateien beim Hochladen mit Laravel unter Windows

Parameter

Param / Funktion Beschreibung

Datei-Upload Name der Datei <input>

$ sampleNamekönnte auch eine dynamisch generierte Zeichenfolge oder der Name der vom Benutzer hochgeladenen Datei sein

app_path ()ist der Laravel-Helfer, um den absoluten Pfad zur Anwendung anzugeben

getCLientOriginalExtension ()

Laravel-Wrapper, um die Erweiterung der vom Benutzer hochgeladenen Datei wie auf dem Benutzercomputer abzurufen

Examples

Zeitstempel-Dateinamen für von Benutzern hochgeladene Dateien generieren.

Unten funktioniert auf einem Windows-Computer nicht

$file = $request->file('file_upload'); $sampleName = 'UserUpload'; $destination = app_path() . '/myStorage/'; $fileName = $sampleName . '-' . date('Y-m-d-H:i:s') . '.' . $file->getClientOriginalExtension(); $file->move($destination, $fileName);

Es wird ein Fehler wie "Datei konnte nicht nach / Pfad ... verschoben werden" ausgegeben.

Warum? - Dies funktioniert perfekt auf einem Ubuntu-Server Der Grund ist, dass unter Windows der colon ':' in einem Dateinamen nicht zulässig ist, während dies unter Linux zulässig ist. Dies ist eine so kleine Sache, dass wir es vielleicht nicht im Voraus bemerken und sich immer wieder fragen, warum ein Code, der unter Ubuntu (Linux) gut läuft, nicht funktioniert? Unsere erste Vermutung wäre, die Dateiberechtigungen und ähnliches zu überprüfen, aber wir bemerken vielleicht nicht, dass der colon ':' hier der Täter ist. Um Dateien unter Windows hochzuladen, verwenden Sie keinen colon':' während Sie mit einem Zeitstempel versehene Dateinamen generieren. Gehen Sie stattdessen wie folgt vor:

https://riptutorial.com/de/home 24

Page 41: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$filename = $sampleName . '-' . date('Y-m-d-H_i_s') . '.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18-11_25_43.xlsx OR $filename = $sampleName . '-' .date('Y-m-d H i s') . '.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18 11 25 43.xlsx OR $filename = $sampleName . '-'.date('Y-m-d_g-i-A').'.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18_11-25-AM.xlsx

Benennen von Dateien beim Hochladen mit Laravel unter Windows online lesen: https://riptutorial.com/de/laravel/topic/2629/benennen-von-dateien-beim-hochladen-mit-laravel-unter-windows

https://riptutorial.com/de/home 25

Page 42: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 9: Benutzerdefinierte Helferfunktion

Einführung

Das Hinzufügen von benutzerdefinierten Helfern kann Sie bei Ihrer Entwicklungsgeschwindigkeit unterstützen. Es gibt jedoch ein paar Dinge, die beim Schreiben solcher Hilfsfunktionen zu berücksichtigen sind, daher dieses Tutorial.

Bemerkungen

Nur ein paar Hinweise:

Wir haben die Funktionsdefinitionen in eine Prüfung ( function_exists ) gestellt, um Ausnahmen zu verhindern, wenn der Dienstanbieter zweimal aufgerufen wird.

Alternativ können Sie die Hilfedatei aus der Datei composer.json registrieren. Sie können die Logik aus dem Laravel-Framework selbst kopieren .

Examples

document.php

<?php if (!function_exists('document')) { function document($text = '') { return $text; } }

Erstellen Sie eine helpers.php-Datei. Nehmen wir an, sie lebt in app/Helpers/document.php . Sie können viele Helfer in einer Datei ablegen (so macht Laravel dies) oder Sie können sie nach Namen aufteilen.

HelpersServiceProvider.php

Jetzt erstellen wir einen Dienstanbieter. Lassen Sie uns es unter app/Providers :

<?php namespace App\Providers; class HelpersServiceProvider extends ServiceProvider { public function register() { require_once __DIR__ . '/../Helpers/document.php'; } }

https://riptutorial.com/de/home 26

Page 43: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Der obige Dienstanbieter lädt die Hilfedatei und registriert Ihre benutzerdefinierte Funktion automatisch. Bitte stellen Sie sicher, dass Sie diesen HelpersServiceProvider in Ihrer config/app.php unter providers registrieren:

'providers' => [ // [..] other providers App\Providers\HelpersServiceProvider::class, ]

Benutzen

Jetzt können Sie die Funktion document() überall in Ihrem Code verwenden, beispielsweise in Blade-Vorlagen. Dieses Beispiel gibt nur die gleiche Zeichenfolge zurück, die es als Argument erhält

<?php Route::get('document/{text}', function($text) { return document($text); });

Gehen Sie jetzt zu /document/foo in Ihrem Browser (Verwendung php artisan serve oder valet ), die zurückkehren wird foo .

Benutzerdefinierte Helferfunktion online lesen: https://riptutorial.com/de/laravel/topic/8347/benutzerdefinierte-helferfunktion

https://riptutorial.com/de/home 27

Page 44: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 10: Beobachter

Examples

Einen Beobachter erstellen

Beobachter werden zum Abhören von Livecycle-Rückrufen eines bestimmten Modells in Laravel verwendet. Diese Zuhörer können eine der folgenden Aktionen abhören:

Erstellen•erstellt•Aktualisierung•aktualisierte•Sparen•Gerettet•löschen•gelöscht•Wiederherstellen•restauriert•

Hier ist ein Beispiel eines Beobachters.

UserObserver

<?php namespace App\Observers; /** * Observes the Users model */ class UserObserver { /** * Function will be triggerd when a user is updated * * @param Users $model */ public function updated($model) { // execute your own code } }

Wie im Benutzerbeobachter gezeigt, hören wir die aktualisierte Aktion. Bevor diese Klasse jedoch das Benutzermodell abhört, müssen wir sie zuerst im EventServiceProvider .

EventServiceProvider

https://riptutorial.com/de/home 28

Page 45: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

<?php namespace App\Providers; use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use App\Models\Users; use App\Observers\UserObserver; /** * Event service provider class */ class EventServiceProvider extends ServiceProvider { /** * Boot function * * @param DispatcherContract $events */ public function boot(DispatcherContract $events) { parent::boot($events); // In this case we have a User model that we want to observe // We tell Laravel that the observer for the user model is the UserObserver Users::observe(new UserObserver()); } }

Nachdem wir unseren Beobachter registriert haben, wird die aktualisierte Funktion jedes Mal nach dem Speichern des Benutzermodells aufgerufen.

Beobachter online lesen: https://riptutorial.com/de/laravel/topic/7128/beobachter

https://riptutorial.com/de/home 29

Page 46: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 11: Berechtigungen für die Speicherung

Einführung

Laravel erfordert, dass einige Ordner für den Webserverbenutzer beschreibbar sind.

Examples

Beispiel

Wir müssen auch die korrekten Berechtigungen für storage auf dem server festlegen. Daher müssen wir eine Schreibberechtigung für das Speicherverzeichnis wie folgt erteilen:

$ chmod -R 777 ./storage ./bootstrap

oder Sie können verwenden

$ sudo chmod -R 777 ./storage ./bootstrap

Für Windows

Stellen Sie sicher, dass Sie auf diesem Computer als Administrator mit schreibberechtigtem Zugriff angemeldet sind

xampp\htdocs\laravel\app\storage needs to be writable

Normalerweise können Sie Berechtigungen festlegen, wenn Ihre Dateien dem Webserver gehören:

sudo chown -R www-data:www-data /path/to/your/root/directory

Berechtigungen für die Speicherung online lesen: https://riptutorial.com/de/laravel/topic/9797/berechtigungen-fur-die-speicherung

https://riptutorial.com/de/home 30

Page 47: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 12: Beredt

Einführung

Das Eloquent ist ein im Laravel enthaltenes ORM (Object Relational Model). Es implementiert das aktive Datensatzmuster und wird zur Interaktion mit relationalen Datenbanken verwendet.

Bemerkungen

Benennung der Tabelle

Die Konvention ist die Verwendung von "snake_case" für Tabellennamen und "StudlyCase" für Modellnamen. Zum Beispiel:

Ein cats - Tabelle würde eine haben Cat Modell•Eine jungle_cats Tabelle hätte ein JungleCat Modell•Eine users hätte ein User•Ein people hätte ein Person•

Eloquent versucht automatisch, Ihr Modell mit einer Tabelle zu verbinden, die den Plural des Modellnamens enthält, wie oben angegeben.

Sie können jedoch einen Tabellennamen angeben, um die Standardkonvention zu überschreiben.

class User extends Model { protected $table = 'customers'; }

Examples

Einführung

Eloquent ist der ORM, der in das Laravel-Gerüst eingebaut ist. Sie können mit Ihren Datenbanktabellen objektorientiert mit dem ActiveRecord- Muster interagieren.

Eine einzelne Modellklasse wird normalerweise einer einzelnen Datenbanktabelle zugeordnet. Außerdem können Beziehungen verschiedener Typen ( Eins-zu-Eins , Eins-zu-Viele , Viele-Zu-Viele , Polymorph) zwischen verschiedenen Modellklassen definiert werden.

Der Abschnitt Modell erstellen beschreibt die Erstellung und Definition von Modellklassen.

Bevor Sie mit der Verwendung von Eloquent-Modellen beginnen können, müssen Sie sicherstellen, dass in der Konfigurationsdatei config/database.php mindestens eine config/database.php konfiguriert ist.

https://riptutorial.com/de/home 31

Page 48: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Um die Verwendung des eloquenten Query Builders während der Entwicklung zu verstehen, können Sie den php artisan ide-helper:generate Befehl php artisan ide-helper:generate . Hier ist der Link .

Unterthemen-Navigation

Eloquente Beziehung

Anhalten

Neben dem Lesen von Daten mit Eloquent können Sie auch Daten mit der save() -Methode einfügen oder aktualisieren. Wenn Sie eine neue Modellinstanz erstellt haben, wird der Datensatz eingefügt . Andernfalls wird das Modell aktualisiert , wenn Sie ein Modell aus der Datenbank abgerufen und neue Werte festgelegt haben.

In diesem Beispiel erstellen wir einen neuen User :

$user = new User(); $user->first_name = 'John'; $user->last_name = 'Doe'; $user->email = '[email protected]'; $user->password = bcrypt('my_password'); $user->save();

Sie können die create Methode auch verwenden, create Felder mit einem Datenarray aufzufüllen:

User::create([ 'first_name'=> 'John', 'last_name' => 'Doe', 'email' => '[email protected]', 'password' => bcrypt('changeme'), ]);

Bei Verwendung der create-Methode sollten Ihre Attribute im fillable Array innerhalb Ihres Modells deklariert werden:

class User extends Model { protected $fillable = [ 'first_name', 'last_name', 'email', 'password', ]; }

Wenn Sie alle Attribute massenzuweisbar machen möchten, können Sie die $ guarded -Eigenschaft als leeres Array definieren:

class User extends Model

https://riptutorial.com/de/home 32

Page 49: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

{ /** * The attributes that aren't mass assignable. * * @var array */ protected $guarded = []; }

Sie können jedoch auch einen Datensatz erstellen, ohne das fillable Attribut in Ihrem Modell zu forceCreate , indem Sie die forceCreate Methode anstelle der create Methode verwenden

User::forceCreate([ 'first_name'=> 'John', 'last_name' => 'Doe', 'email' => '[email protected]', 'password' => bcrypt('changeme'), ]);

Im Folgenden finden Sie ein Beispiel zum Aktualisieren eines vorhandenen User , indem Sie es zunächst laden (mithilfe von find ), ändern und anschließend speichern.

$user = User::find(1); $user->password = bcrypt('my_new_password'); $user->save();

Um dieselbe Leistung mit einem einzelnen Funktionsaufruf zu erreichen, können Sie die update verwenden:

$user->update([ 'password' => bcrypt('my_new_password'), ]);

Die Methoden zum create und update machen die Arbeit mit großen Datensätzen viel einfacher, als jedes Schlüssel / Wert-Paar einzeln einstellen zu müssen, wie in den folgenden Beispielen gezeigt:

Beachten Sie die Verwendung von only und except wenn Anforderungsdaten zu sammeln. Es ist wichtig, dass Sie genau die Schlüssel angeben, die aktualisiert werden sollen / nicht zulassen. Andernfalls kann ein Angreifer zusätzliche Felder mit seiner Anforderung senden und unerwünschte Aktualisierungen verursachen.

// Updating a user from specific request data $data = Request::only(['first_name', 'email']); $user->find(1); $user->update($data); // Create a user from specific request data $data = Request::except(['_token', 'profile_picture', 'profile_name']); $user->create($data);

Löschen

https://riptutorial.com/de/home 33

Page 50: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Sie können Daten löschen, nachdem Sie sie in die Datenbank geschrieben haben. Sie können entweder eine Modellinstanz löschen, wenn Sie eine Instanz abgerufen haben, oder Bedingungen angeben, unter denen die Datensätze gelöscht werden sollen.

Um eine Modellinstanz zu löschen, rufen Sie sie ab und rufen die delete() -Methode auf:

$user = User::find(1); $user->delete();

Alternativ können Sie einen Primärschlüssel (oder ein Array von Primärschlüsseln) der Datensätze angeben, die Sie über die destroy() Methode löschen möchten:

User::destroy(1); User::destroy([1, 2, 3]);

Sie können das Abfragen auch mit dem Löschen kombinieren:

User::where('age', '<', 21)->delete();

Dadurch werden alle Benutzer gelöscht, die der Bedingung entsprechen.

Hinweis: Wenn Sie eine Massenlöschanweisung über Eloquent ausführen, werden die deleting und deleted Modellereignisse für die gelöschten Modelle nicht ausgelöst. Dies liegt daran, dass die Modelle beim Ausführen der Löschanweisung nie tatsächlich abgerufen werden.

Weiches Löschen

Manchmal möchten Sie einen Datensatz nicht dauerhaft löschen, sondern ihn zu Prüf- oder Berichterstellungszwecken aufbewahren. Dafür bietet Eloquent die Funktion zum sanften Löschen .

Um Ihrem Modell Soft Deletes-Funktionen hinzuzufügen, müssen Sie das SoftDeletes Merkmal importieren und es Ihrer Eloquent-Modellklasse hinzufügen:

namespace Illuminate\Database\Eloquent\Model; namespace Illuminate\Database\Eloquent\SoftDeletes; class User extends Model { use SoftDeletes; }

Wenn Sie ein Modell löschen, wird ein Zeitstempel für eine Zeitstempel-Spalte ' deleted_at in der Tabelle für Ihr Modell festgelegt. Erstellen Sie daher zuerst die Spalte deleted_at in Ihrer Tabelle. Oder Sie sollten bei der Migration die Methode softDeletes() in Ihrem Blueprint deleted_at , um den Zeitstempel deleted_at hinzuzufügen. Beispiel:

Schema::table('users', function ($table) {

https://riptutorial.com/de/home 34

Page 51: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$table->softDeletes(); });

Bei allen Abfragen werden nicht gelöschte Datensätze ausgelassen. Sie können sie mit Hilfe des withTrashed() erzwingen, wenn Sie möchten:

User::withTrashed()->get();

Wenn Sie Benutzern das Wiederherstellen eines Datensatzes nach dem Soft-Löschen ermöglichen möchten (z. B. in einem Papierkorb), können Sie die restore() Methode verwenden:

$user = User::find(1); $user->delete(); $user->restore();

Um einen Datensatz zwangsweise zu löschen, verwenden Sie die forceDelete() -Methode, die den Datensatz wirklich aus der Datenbank entfernt:

$user = User::find(1); $user->forceDelete();

Primärschlüssel und Zeitstempel ändern

Standardmäßig erwarten Eloquent-Modelle, dass der Primärschlüssel 'id' . Wenn dies nicht Ihr Fall ist, können Sie den Namen Ihres Primärschlüssels ändern, indem Sie die Eigenschaft $primaryKey .

class Citizen extends Model { protected $primaryKey = 'socialSecurityNo'; // ... }

Jetzt verwenden alle Eloquent-Methoden, die Ihren Primärschlüssel verwenden (z. B. find oder findOrFail ), diesen neuen Namen.

Darüber hinaus erwartet Eloquent, dass der Primärschlüssel eine automatisch inkrementierende Ganzzahl ist. Wenn Ihr Primärschlüssel keine automatisch inkrementierende Ganzzahl ist (z. B. eine GUID), müssen Sie Eloquent mitteilen, indem Sie die $incrementing Eigenschaft auf false :

class Citizen extends Model { protected $primaryKey = 'socialSecurityNo'; public $incrementing = false; // ... }

https://riptutorial.com/de/home 35

Page 52: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Standardmäßig erwartet Eloquent, dass die created_at und updated_at in Ihren Tabellen vorhanden sind. Wenn Sie nicht möchten, dass diese Spalten automatisch von Eloquent verwaltet werden, setzen Sie die $timestamps Ihres Modells auf false:

class Citizen extends Model { public $timestamps = false; // ... }

Wenn Sie die Namen der Spalten anpassen müssen, die zum Speichern der Zeitstempel verwendet werden, können Sie die Konstanten CREATED_AT und UPDATED_AT in Ihrem Modell UPDATED_AT :

class Citizen extends Model { const CREATED_AT = 'date_of_creation'; const UPDATED_AT = 'date_of_last_update'; // ... }

Werfen Sie 404, wenn die Entität nicht gefunden wurde

Wenn Sie bei der Suche nach einem Datensatz, der in einem Modal nicht gefunden wird, automatisch eine Ausnahme auslösen möchten, können Sie eine der beiden verwenden

Vehicle::findOrFail(1);

oder

Vehicle::where('make', 'ford')->firstOrFail();

Wenn kein Datensatz mit dem Primärschlüssel 1 gefunden wird, wird eine ModelNotFoundException ausgelöst. Welches ist im Wesentlichen dasselbe wie das Schreiben ( Quelltext anzeigen ):

$vehicle = Vehicle::find($id); if (!$vehicle) { abort(404); }

Klonen von Modellen

Möglicherweise müssen Sie eine Reihe klonen, einige Attribute ändern, aber Sie benötigen eine effiziente Möglichkeit, die Dinge trocken zu halten. Laravel bietet eine Art "versteckter" Methode, um diese Funktion ausführen zu können. Obwohl es völlig undokumentiert ist, müssen Sie die API durchsuchen, um sie zu finden.

https://riptutorial.com/de/home 36

Page 53: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Mit $model->replicate() Sie einen Datensatz einfach klonen

$robot = Robot::find(1); $cloneRobot = $robot->replicate(); // You can add custom attributes here, for example he may want to evolve with an extra arm! $cloneRobot->arms += 1; $cloneRobot->save();

Das Obige würde einen Roboter mit der ID 1 finden und dann klonen.

Beredt online lesen: https://riptutorial.com/de/laravel/topic/865/beredt

https://riptutorial.com/de/home 37

Page 54: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 13: Blade-Vorlagen

Einführung

Laravel unterstützt Blade-Templating-Engine aus der Box. Mit der Blade-Template-Engine können wir Master-Templates erstellen und untergeordnete Templates zum Laden von Inhalten aus Master-Templates erstellen. In der Blade-Datei können Variablen, Schleifen und Bedingungsanweisungen enthalten sein.

Examples

Ansichten: Einführung

Ansichten in einem MVC-Muster enthalten die Logik, wie dem Benutzer Daten angezeigt werden. In einer Webanwendung werden sie normalerweise zum Generieren der HTML-Ausgabe verwendet, die mit jeder Antwort an die Benutzer zurückgesendet wird. Ansichten in Laravel werden standardmäßig im Verzeichnis resources/views gespeichert.

Eine Ansicht kann mit der view Helper-Funktion aufgerufen werden:

view(string $path, array $data = [])

Der erste Parameter des Helpers ist der Pfad zu einer Ansichtsdatei, und der zweite Parameter ist ein optionales Array von Daten, die an die Ansicht übergeben werden.

Um die resources/views/example.php aufzurufen, würden Sie also Folgendes verwenden:

view('example');

Dateien in Unterordnern im Verzeichnis resources/views , wie z. B. resources/views/parts/header/navigation.php , können mit Punktnotation aufgerufen werden: view('parts.header.navigation');

In einer Ansichtsdatei, wie z. B. resources/views/example.php , können Sie HTML und PHP zusammen hinzufügen:

<html> <head> <title>Hello world!</title> </head> <body> <h1>Welcome!</h1> <p>Your name is: <?php echo $name; ?></p> </body> </html>

Im vorherigen Beispiel (das keine Blade-spezifische Syntax verwendet) geben wir die Variable

https://riptutorial.com/de/home 38

Page 55: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$name . Um diesen Wert an unsere Ansicht zu übergeben, übergeben wir beim Aufruf des View-Helpers ein Array von Werten:

view('example', ['name' => $name]);

oder verwenden Sie alternativ den compact() Helfer. In diesem Fall entspricht der an compact () übergebene String dem Namen der Variablen, die an die Ansicht übergeben werden soll.

view('example', compact('name'));

NAMING-KONVENTION FÜR BLATT-VARIABLEN

Beim Senden von Daten zur Ansicht zurück. Sie können underscore für variable mit mehreren Wörtern verwenden variable aber mit - laravel gibt Fehler aus.

So wird ein Fehler (Hinweis hyphen ( - ) in der user-address

view('example',['user-address' => 'Some Address']);

Der richtige Weg , dies zu tun, wird sein

view('example', ['user_address' => 'Some Address']);

Kontrollstrukturen

Blade bietet eine komfortable Syntax für gängige PHP-Kontrollstrukturen.

Jede der Kontrollstrukturen beginnt mit @[structure] und endet mit @[endstructure] . Beachten Sie, dass wir innerhalb der Tags normales HTML eingeben und Variablen in die Blade-Syntax einbeziehen.

Conditionals

"If" -Anweisungen

@if ($i > 10) <p>{{ $i }} is large.</p> @elseif ($i == 10) <p>{{ $i }} is ten.</p> @else <p>{{ $i }} is small.</p> @endif

"Es sei denn" Aussagen

(Kurze Syntax für 'wenn nicht'.)

https://riptutorial.com/de/home 39

Page 56: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

@unless ($user->hasName()) <p>A user has no name.</p> @endunless

Schleifen

'While-Schleife

@while (true) <p>I'm looping forever.</p> @endwhile

Foreach-Schleife

@foreach ($users as $id => $name) <p>User {{ $name }} has ID {{ $id }}.</p> @endforeach

"Forelse" -Schleife

(Wie 'foreach' -Schleife, fügt jedoch eine spezielle @empty Direktive hinzu, die ausgeführt wird, wenn der Array-Ausdruck leer ist, um den Standardinhalt anzuzeigen.)

@forelse($posts as $post) <p>{{ $post }} is the post content.</p> @empty <p>There are no posts.</p> @endforelse

Innerhalb von Schleifen steht eine spezielle $loop Variable zur Verfügung, die Informationen über den Zustand der Schleife enthält:

Eigentum Beschreibung

$loop->index Der Index der aktuellen Schleifeniteration (beginnt bei 0).

$loop->iteration Die aktuelle Schleifeniteration (beginnt bei 1).

$loop->remaining Die verbleibenden Schleifeniterationen.

$loop->count Die Gesamtzahl der Elemente im Array, die iteriert werden.

$loop->first Ob dies die erste Iteration durch die Schleife ist.

$loop->last Ob dies die letzte Iteration durch die Schleife ist.

https://riptutorial.com/de/home 40

Page 57: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Eigentum Beschreibung

$loop->depth Die Verschachtelungsebene der aktuellen Schleife.

$loop->parentIn einer verschachtelten Schleife die Schleifenvariable des übergeordneten Objekts.

Beispiel:

@foreach ($users as $user) @foreach ($user->posts as $post) @if ($loop->parent->first) This is first iteration of the parent loop. @endif @endforeach @endforeach

Seit Laravel 5.2.22 können wir auch die Direktiven @continue und @break

Eigentum Beschreibung

@continue Stoppen Sie die aktuelle Iteration und starten Sie die nächste.

@break Stoppen Sie die Stromschleife.

Beispiel:

@foreach ($users as $user) @continue ($user->id == 2) <p>{{ $user->id }} {{ $user->name }}</p> @break ($user->id == 4) @endforeach

Dann wird die Seite gerendert ( vorausgesetzt, dass mehr als fünf Benutzer nach ID sortiert sind und keine ID fehlt )

1 Dave 3 John 4 William

Echo von PHP-Ausdrücken

Jeder PHP - Ausdruck in doppelten geschweifte Klammern {{ $variable }} wird echo ed nachdem sie durch die laufen wird e - Helferfunktion . (So werden HTML-Sonderzeichen ( < , > , " , ' , & ) für die entsprechenden HTML-Entitäten sicher ersetzt.) (Der PHP-Ausdruck muss als Zeichenfolge ausgewertet werden, andernfalls wird eine Ausnahme ausgelöst.)

Eine Variable wiederholen

https://riptutorial.com/de/home 41

Page 58: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

{{ $variable }}

Echo eines Elements in einem Array

{{ $array["key"] }}

Echo einer Objekteigenschaft

{{ $object->property }}

Das Ergebnis eines Funktionsaufrufs wiederholen

{{ strtolower($variable) }}

Existenz prüfen

Normalerweise wird in PHP normalerweise geprüft, ob eine Variable gesetzt und gedruckt wurde

Vor PHP 7•

<?php echo isset($variable) ? $variable : 'Default'; ?>

Nach PHP 7 (mit dem "Null-Koaleszenz-Operator")•

<?php echo $variable ?? 'Default'; ?>

Blade Operator or macht das einfacher:

{{ $variable or 'Default' }}

Rohe Echos

Wie bereits erwähnt, wird die Syntax der doppelten geschweiften Klammern {{ }} aus Sicherheitsgründen aus der htmlspecialchars Funktion von PHP herausgefiltert (Verhindern einer böswilligen HTML- htmlspecialchars in die Ansicht). Wenn Sie dieses Verhalten umgehen möchten, beispielsweise wenn Sie versuchen, einen Block von HTML-Inhalt auszugeben, der aus einem PHP-Ausdruck resultiert, verwenden Sie die folgende Syntax:

{!! $myHtmlString !!}

Beachten Sie, dass es eine bewährte Methode ist, die Standardsyntax {{ }} zu verwenden, um

https://riptutorial.com/de/home 42

Page 59: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Ihre Daten zu schützen, sofern dies nicht unbedingt erforderlich ist. Wenn Sie nicht vertrauenswürdige Inhalte (z. B. von Benutzern Ihrer Website bereitgestellte Inhalte) wiedergeben, sollten Sie die Verwendung der {!! !!} Syntax.

Einschließlich Teilansichten

Mit Blade können Sie auch Teilansichten (so genannte "partials") direkt in eine Seite einbinden:

@include('includes.info', ['title' => 'Information Station'])

Der obige Code enthält die Ansicht unter 'views / includes / info.blade.php'. Es wird auch eine Variable $title mit dem Wert 'Information Station' übergeben.

Im Allgemeinen hat eine eingeschlossene Seite Zugriff auf alle Variablen, auf die die aufrufende Seite Zugriff hat. Wenn wir zum Beispiel haben:

{{$user}} // Outputs 'abc123' @include('includes.info')

Und 'Includes / info.blade.php' hat folgendes:

<p>{{$user}} is the current user.</p>

Dann wird die Seite gerendert:

abc123 abc123 is the current user.

Jedes einschließen

Manchmal möchten Sie eine include Anweisung mit einer foreach Anweisung kombinieren und auf die Variablen innerhalb der foreach-Schleife im include zugreifen. Verwenden Sie in diesem Fall die @each Direktive von Blade:

@each('includes.job', $jobs, 'job')

Der erste Parameter ist die einzuschließende Seite. Der zweite Parameter ist das zu iterierende Array. Der dritte Parameter ist die den Elementen des Arrays zugewiesene Variable. Die obige Aussage entspricht:

@foreach($jobs as $job) @include('includes.job', ['job' => $job]) @endforeach

Sie können der @each Direktive auch ein optionales viertes Argument @each , um die Ansicht anzugeben, die @each , wenn das Array leer ist.

@each('includes.job', $jobs, 'job', 'includes.jobsEmpty')

https://riptutorial.com/de/home 43

Page 60: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Vererbung des Layouts

Ein Layout ist eine Ansichtsdatei, die um andere Ansichten erweitert wird, die Codeblöcke in ihr übergeordnetes Element einfügen. Zum Beispiel:

parent.blade.php:

<html> <head> <style type='text/css'> @yield('styling') </style> </head> <body> <div class='main'> @yield('main-content') </div> </body> </html>

child.blade.php:

@extends('parent') @section('styling') .main { color: red; } @stop @section('main-content') This is child page! @stop

otherpage.blade.php:

@extends('parent') @section('styling') .main { color: blue; } @stop @section('main-content') This is another page! @stop

Hier sehen Sie zwei beispielhafte untergeordnete Seiten, die jeweils die übergeordneten Seiten erweitern. Die @section Seiten definieren ein @section , das bei der entsprechenden @yield Anweisung in das übergeordnete @yield eingefügt wird.

Die Ansicht, die von View::make('child') gerendert wird, sagt also " This is child page! " In rot, während View::make('otherpage') dieselbe HTML View::make('otherpage') erzeugt, außer mit dem

https://riptutorial.com/de/home 44

Page 61: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Text " Dies ist ein anderer Seite! "stattdessen in blau.

Es ist üblich, die Ansichtsdateien voneinander zu trennen, z. B. mit einem Layouts-Ordner für die Layoutdateien und einem separaten Ordner für die verschiedenen spezifischen Ansichten.

Die Layouts sollen den Code anwenden, der auf jeder Seite angezeigt werden soll, z. B. Hinzufügen einer Seitenleiste oder eines Headers, ohne dass die HTML-Boilerplate in jeder einzelnen Ansicht geschrieben werden muss.

Ansichten können wiederholt erweitert werden, dh page3 kann @extend('page2') und page2 kann @extend('page1') .

Der Befehl zum Erweitern verwendet dieselbe Syntax wie für View::make und @include , daher wird auf die Datei layouts/main/page.blade.php als layouts.main.page .

Daten für alle Ansichten freigeben

Manchmal müssen Sie in vielen Ansichten die gleichen Daten festlegen.

View :: share verwenden

// "View" is the View Facade View::share('shareddata', $data);

Danach steht der Inhalt von $data in allen Ansichten unter dem Namen $shareddata .

View::share wird normalerweise in einem Dienstanbieter oder möglicherweise im Konstruktor eines Controllers aufgerufen. Daher werden die Daten nur in Ansichten geteilt, die nur von diesem Controller zurückgegeben werden.

View :: composer verwenden

View-Komponisten sind Callbacks oder Klassenmethoden, die beim Rendern einer View aufgerufen werden. Wenn Sie Daten haben, die bei jeder Wiedergabe dieser Ansicht an eine Ansicht gebunden werden sollen, kann ein View-Composer Ihnen dabei helfen, diese Logik an einem einzigen Ort zu organisieren. Sie können Variablen direkt an eine bestimmte Ansicht oder an alle Ansichten binden.

Closure-basierter Komponist

use Illuminate\Support\Facades\View; // ... View::composer('*', function ($view) { $view->with('somedata', $data);

https://riptutorial.com/de/home 45

Page 62: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

});

Klassenbasierter Komponist

use Illuminate\Support\Facades\View; // ... View::composer('*', 'App\Http\ViewComposers\SomeComposer');

Wie bei View::share ist es am besten, die Komponisten bei einem Dienstanbieter zu registrieren.

Wenn Sie den Ansatz der Composer-Klasse verwenden, haben Sie App/Http/ViewComposers/SomeComposer.php mit:

use Illuminate\Contracts\View\View; class SomeComposer { public function compose(View $view) { $view->with('somedata', $data); } }

Diese Beispiele verwenden '*' in der Composer-Registrierung. Dieser Parameter ist eine Zeichenfolge, die mit den Namen der Ansicht übereinstimmt, für die der Komponist registriert werden soll ( * als Platzhalter). Sie können auch eine einzelne Ansicht (z. B. 'home' ) einer Gruppe von Routen unter einem Unterordner auswählen (z. B. 'users.*' ).

Beliebigen PHP-Code ausführen

Obwohl es möglicherweise nicht angemessen ist, eine solche Ansicht in einer Ansicht auszuführen, wenn Sie die Bedenken strikt voneinander trennen möchten, ermöglicht die Blade-Direktive von php eine Möglichkeit, PHP-Code auszuführen, beispielsweise um eine Variable zu setzen:

@php($varName = 'Enter content ')

(gleich wie:)

@php $varName = 'Enter content '; @endphp

später:

{{ $varName }}

https://riptutorial.com/de/home 46

Page 63: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Ergebnis:

Inhalt eingeben

Blade-Vorlagen online lesen: https://riptutorial.com/de/laravel/topic/1407/blade-vorlagen

https://riptutorial.com/de/home 47

Page 64: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 14: Controller

Einführung

Anstatt Ihre gesamte Logik für die Anforderungsverarbeitung als Closures in Routendateien zu definieren, können Sie dieses Verhalten mit Controller-Klassen organisieren. Controller können zugehörige Anforderungsverarbeitungslogiken in einer einzigen Klasse zusammenfassen. Controller werden standardmäßig im Verzeichnis app/Http/Controllers gespeichert.

Examples

Grundsteuerungen

<?php namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class UserController extends Controller { /** * Show the profile for the given user. * * @param int $id * @return Response */ public function show($id) { return view('user.profile', ['user' => User::findOrFail($id)]); } }

Sie können eine Route zu dieser Controller-Aktion wie folgt definieren:

Route::get('user/{id}', 'UserController@show');

Wenn nun eine Anforderung mit dem angegebenen Routen-URI übereinstimmt, wird die show Methode für die UserController Klasse ausgeführt. Natürlich werden auch die Routenparameter an die Methode übergeben.

Controller-Middleware

In den Routendateien kann den Routen des Controllers Middleware zugewiesen werden:

Route::get('profile', 'UserController@show')->middleware('auth');

Es ist jedoch praktischer, die Middleware im Konstruktor Ihres Controllers anzugeben. Mit der Middleware-Methode des Konstruktors Ihres Controllers können Sie der Aktion des Controllers

https://riptutorial.com/de/home 48

Page 65: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

problemlos Middleware zuweisen.

class UserController extends Controller { /** * Instantiate a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth'); $this->middleware('log')->only('index'); $this->middleware('subscribed')->except('store'); } }

Ressourcencontroller

Das Laravel-Ressourcenrouting weist einem Controller die typischen "CRUD" -Routen mit einer einzelnen Codezeile zu. Sie möchten beispielsweise einen Controller erstellen, der alle HTTP-Anforderungen für "Fotos" verarbeitet, die in Ihrer Anwendung gespeichert sind. Mit dem Befehl make:controller Artisan können Sie schnell einen solchen Controller erstellen:

php artisan make:controller PhotoController --resource

Dieser Befehl generiert einen Controller unter app/Http/Controllers/PhotoController.php . Der Controller enthält eine Methode für jede der verfügbaren Ressourcenoperationen.

Beispiel für einen Resource Controller

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PhotoController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response

https://riptutorial.com/de/home 49

Page 66: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

*/ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // }

https://riptutorial.com/de/home 50

Page 67: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

}

Im Beispiel für den Ressourcencontroller wird der Methodenname der in der nachstehenden Tabelle angegebenen Namen verwendet.

Als Nächstes können Sie eine hilfreiche Route zum Controller registrieren:

Route::resource('photos', 'PhotoController');

Diese Einzelroutendeklaration erstellt mehrere Routen, um eine Vielzahl von Aktionen für die Ressource auszuführen. Für den generierten Controller sind bereits Methoden für jede dieser Aktionen hinterlegt, einschließlich Notizen, die Sie über die HTTP-Verben und die URIs informieren, die sie behandeln.

Vom Ressourcen-Controller gehandhabte Aktionen

Verb URI Aktion Routenname

ERHALTEN /photos Index fotos.index

ERHALTEN /photos/create erstellen Fotos erstellen

POST /photos Geschäft Fotos.Store

ERHALTEN /photos/{photo} Show fotos.show

ERHALTEN /photos/{photo}/edit bearbeiten fotos.edit

PUT / PATCH /photos/{photo} aktualisieren fotos.update

LÖSCHEN /photos/{photo} zerstören fotos.destroy

Controller online lesen: https://riptutorial.com/de/laravel/topic/10604/controller

https://riptutorial.com/de/home 51

Page 68: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 15: Cron-Grundlagen

Einführung

Cron ist ein Task-Scheduler-Daemon, der in bestimmten Intervallen geplante Tasks ausführt. Cron verwendet eine Konfigurationsdatei namens crontab, die auch als crontabelle bezeichnet wird, um den Planungsprozess zu verwalten.

Examples

Cron-Job erstellen

Crontab enthält Cron-Jobs, die sich jeweils auf eine bestimmte Aufgabe beziehen. Cron-Jobs bestehen aus zwei Teilen, dem Cron-Ausdruck und einem auszuführenden Shell-Befehl:

* * * * * Befehl / zum / Ausführen

Jedes Feld im obigen Ausdruck * * * * * ist eine Option zum Festlegen der Häufigkeit des Zeitplans. Sie setzt sich aus Minute, Stunde, Tag des Monats, Monat und Wochentag in der Reihenfolge der Platzierung zusammen. Das Sternsymbol bezieht sich auf alle möglichen Werte für das jeweilige Feld. Der obige Cron-Job wird daher jede Minute am Tag ausgeführt.

Der folgende Cron-Job wird jeden Tag um 12:30 ausgeführt:

30 12 * * * Befehl / zum / Ausführen

Cron-Grundlagen online lesen: https://riptutorial.com/de/laravel/topic/9891/cron-grundlagen

https://riptutorial.com/de/home 52

Page 69: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 16: CustomException-Klasse in Laravel

Einführung

PHP-Ausnahmen werden ausgelöst, wenn ein beispielloses Ereignis oder Fehler auftritt.

Als Faustregel gilt, dass keine Ausnahme zur Steuerung der Anwendungslogik verwendet werden sollte, z. B. if-Anweisungen, und sollte eine Unterklasse der Exception-Klasse sein.

Ein Hauptvorteil, wenn alle Ausnahmen von einer einzelnen Klasse erfasst werden, besteht darin, dass wir benutzerdefinierte Ausnahmebehandler erstellen können, die je nach Ausnahmebedingung unterschiedliche Antwortnachrichten zurückgeben.

Examples

CustomException-Klasse in Laravel

Alle Fehler und Ausnahmen (benutzerdefiniert und Standard) werden von der Handler-Klasse in app / Exceptions / Handler.php mit zwei Methoden behandelt.

Bericht()•

machen()

public function render($request, Exception $e) { //check if exception is an instance of ModelNotFoundException. if ($e instanceof ModelNotFoundException) { // ajax 404 json feedback if ($request->ajax()) { return response()->json(['error' => 'Not Found'], 404); } // normal 404 view page feedback return response()->view('errors.missing', [], 404); } return parent::render($request, $e); }

Erstellen Sie dann eine Ansicht, die sich auf Fehler im Fehlerordner mit dem Namen 404.blade.php bezieht

Benutzer wurde nicht gefunden.

Sie haben das Gleichgewicht des Internets gebrochen

https://riptutorial.com/de/home 53

Page 70: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

CustomException-Klasse in Laravel online lesen: https://riptutorial.com/de/laravel/topic/9550/customexception-klasse-in-laravel

https://riptutorial.com/de/home 54

Page 71: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 17: Dateisystem / Cloud-Speicher

Examples

Aufbau

Die Dateisystem-Konfigurationsdatei befindet sich unter config/filesystems.php . In dieser Datei können Sie alle "Festplatten" konfigurieren. Jede Festplatte steht für einen bestimmten Speichertreiber und Speicherort. Beispielkonfigurationen für jeden unterstützten Treiber sind in der Konfigurationsdatei enthalten. Ändern Sie einfach die Konfiguration entsprechend Ihren Speichereinstellungen und Anmeldeinformationen!

Bevor Sie die S3- oder Rackspace-Treiber verwenden, müssen Sie das entsprechende Paket über Composer installieren:

Amazon S3: league/flysystem-aws-s3-v2 ~1.0•Rackspace: league/flysystem-rackspace ~1.0•

Natürlich können Sie beliebig viele Festplatten konfigurieren und haben sogar mehrere Festplatten, die denselben Treiber verwenden.

Beachten Sie bei der Verwendung des lokalen Treibers, dass alle Dateioperationen relativ zu dem in Ihrer Konfigurationsdatei definierten Stammverzeichnis sind. Standardmäßig ist dieser Wert auf das storage/app directory . Daher würde die folgende Methode eine Datei in storage/app/file.txt speichern:

Storage::disk('local')->put('file.txt', 'Contents');

Grundlegende Verwendung

Die Storage kann für die Interaktion mit einer der konfigurierten Festplatten verwendet werden. Alternativ können Sie auch den Illuminate\Contracts\Filesystem\Factory Vertrag für jede Klasse eingeben, die über den Laravel-Service-Container aufgelöst wird.

Eine bestimmte Festplatte abrufen

$disk = Storage::disk('s3'); $disk = Storage::disk('local');

Bestimmen, ob eine Datei vorhanden ist

$exists = Storage::disk('s3')->exists('file.jpg');

Aufrufen von Methoden auf der Standardfestplatte

https://riptutorial.com/de/home 55

Page 72: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

if (Storage::exists('file.jpg')) { // }

Inhalt einer Datei abrufen

$contents = Storage::get('file.jpg');

Inhalt einer Datei einstellen

Storage::put('file.jpg', $contents);

Vorbereiten einer Datei

Storage::prepend('file.log', 'Prepended Text');

An eine Datei anhängen

Storage::append('file.log', 'Appended Text');

Eine Datei löschen

Storage::delete('file.jpg'); Storage::delete(['file1.jpg', 'file2.jpg']);

Kopieren Sie eine Datei an einen neuen Speicherort

Storage::copy('old/file1.jpg', 'new/file1.jpg');

Verschieben Sie eine Datei an einen neuen Speicherort

Storage::move('old/file1.jpg', 'new/file1.jpg');

Dateigröße erhalten

$size = Storage::size('file1.jpg');

Letzte Änderungszeit (UNIX)

$time = Storage::lastModified('file1.jpg');

Holen Sie sich alle Dateien in einem Verzeichnis

$files = Storage::files($directory); // Recursive...

https://riptutorial.com/de/home 56

Page 73: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$files = Storage::allFiles($directory);

Holen Sie sich alle Verzeichnisse in einem Verzeichnis

$directories = Storage::directories($directory); // Recursive... $directories = Storage::allDirectories($directory);

Erstellen Sie ein Verzeichnis

Storage::makeDirectory($directory);

Ein Verzeichnis löschen

Storage::deleteDirectory($directory);

Benutzerdefinierte Dateisysteme

Die Flysystem-Integration von Laravel bietet Treiber für mehrere "Treiber", die sofort einsatzbereit sind. Flysystem ist jedoch nicht darauf beschränkt und verfügt über Adapter für viele andere Speichersysteme. Sie können einen benutzerdefinierten Treiber erstellen, wenn Sie einen dieser zusätzlichen Adapter in Ihrer Laravel-Anwendung verwenden möchten. Keine Sorge, es ist nicht zu schwer!

Um das benutzerdefinierte Dateisystem einzurichten, müssen Sie einen Dienstanbieter wie DropboxFilesystemServiceProvider . In der boot Methode des Providers können Sie eine Instanz des Illuminate\Contracts\Filesystem\Factory einfügen und die extend der injizierten Instanz aufrufen. Alternativ können Sie die extend der Disk Fassade verwenden.

Das erste Argument der extend Methode ist der Name des Treibers und das zweite Argument ist ein Closure, der die Variablen $app und $config empfängt. Der Resolver-Abschluss muss eine Instanz von League\Flysystem\Filesystem .

Hinweis: Die $ config-Variable enthält bereits die Werte, die in config/filesystems.php für den angegebenen Datenträger definiert sind. Dropbox-Beispiel

<?php namespace App\Providers; use Storage; use League\Flysystem\Filesystem; use Dropbox\Client as DropboxClient; use League\Flysystem\Dropbox\DropboxAdapter; use Illuminate\Support\ServiceProvider; class DropboxFilesystemServiceProvider extends ServiceProvider { public function boot() { Storage::extend('dropbox', function($app, $config) {

https://riptutorial.com/de/home 57

Page 74: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$client = new DropboxClient($config['accessToken'], $config['clientIdentifier']); return new Filesystem(new DropboxAdapter($client)); }); } public function register() { // } }

Erstellen eines symbolischen Links in einem Webserver mit SSH

In der Laravel-Dokumentation sollte ein symbolischer Link (Symlink oder Softlink) von public / storage nach storage / app / public erstellt werden, um Dateien aus dem Web zugänglich zu machen.

(DIESES VERFAHREN WIRD SYMBOLISCHE VERBINDUNG IM LARAVEL-PROJEKTVERZEICHNIS ERSTELLEN.)

Gehen Sie wie folgt vor, um auf Ihrem Linux-Webserver mithilfe des SSH-Clients einen symbolischen Link zu erstellen:

Verbinden Sie sich über einen SSH-Client (z. B. PUTTY) mit Ihrem Webserver.1.

Verknüpfen Sie Storage / App / public mit public / storage mithilfe der Syntax

ln -s target_path link_path

Beispiel (im CPanel-Dateiverzeichnis)

ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage

2.

(Ein Ordner mit dem Namen " Speicher" wird erstellt, um den Pfad mit einem Indikator >>> auf dem Ordnersymbol zu verknüpfen.)

Dateisystem / Cloud-Speicher online lesen: https://riptutorial.com/de/laravel/topic/3040/dateisystem---cloud-speicher

https://riptutorial.com/de/home 58

Page 75: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 18: Datenbank

Examples

Mehrere Datenbankverbindungen

Mit Laravel können Benutzer an mehreren Datenbankverbindungen arbeiten. Wenn Sie eine Verbindung zu mehreren Datenbanken herstellen und diese zusammenarbeiten müssen, achten Sie auf den Verbindungsaufbau.

Sie erlauben auch die Verwendung verschiedener Datenbanktypen in derselben Anwendung, wenn Sie dies benötigen.

Standardverbindung In config/database.php können Sie den Aufruf des Konfigurationselements sehen:

'default' => env('DB_CONNECTION', 'mysql'),

Dieser Name verweist auf den Namen mysql der Verbindungen:

'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => database_path('database.sqlite'), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], ],

Wenn Sie den Namen der Datenbankverbindung nicht in anderen Codes oder Befehlen angegeben haben, wird Laravel den Standardnamen der Datenbankverbindung ermitteln. Bei mehreren Datenbankverbindungen können Sie jedoch selbst bei der Einrichtung der Standardverbindung besser festlegen, welche Datenbankverbindung Sie verwendet haben.

Migrationsdatei

In einer Migrationsdatei können Sie bei einer einzelnen Datenbankverbindung Folgendes

https://riptutorial.com/de/home 59

Page 76: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

verwenden:

Schema::create("table",function(Blueprint $table){ $table->increments('id'); });

In einer Datenbankverbindung verwenden Sie die Methode connection() , um Laravel mitzuteilen, welche Datenbankverbindung Sie verwenden:

Schema::connection("sqlite")->create("table",function(Blueprint $table){ $table->increments('id'); });

Handwerker migrieren

Wenn Sie eine einzige Datenbankverbindung verwenden, führen Sie Folgendes aus:

php artisan migrate

Bei einer Verbindung mit mehreren Datenbanken sollten Sie jedoch besser wissen, welche Datenbankverbindung die Migrationsdaten verwaltet. So führen Sie den folgenden Befehl aus:

php artisan migrate:install --database=sqlite

Dieser Befehl installiert die Migrationstabelle in der Zieldatenbank, um die Migration vorzubereiten.

php artisan migrate --database=sqlite

Dieser Befehl führt die Migration aus und speichert die Migrationsdaten in der Zieldatenbank

php artisan migrate:rollback --database=sqlite

Dieser Befehl führt die Migration zurück und speichert die Migrationsdaten in der Zieldatenbank

Eloquentes Modell

Um eine Datenbankverbindung mit Eloquent anzugeben, müssen Sie die $connection -Eigenschaft definieren:

namespace App\Model\Sqlite; class Table extends Model { protected $table="table"; protected $connection = 'sqlite'; }

So legen Sie eine weitere (zweite) Datenbankverbindung mit Eloquent fest:

namespace App\Model\MySql;

https://riptutorial.com/de/home 60

Page 77: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

class Table extends Model { protected $table="table"; protected $connection = 'mysql'; }

Laravel verwendet die in einem Modell definierte $connection -Eigenschaft, um die in config/database.php definierte angegebene Verbindung zu verwenden. Wenn die $connection -Eigenschaft nicht in einem Modell definiert ist, wird der Standardwert verwendet.

Sie können auch eine andere Verbindung mit der Methode static on angeben:

// Using the sqlite connection Table::on('sqlite')->select(...)->get() // Using the mysql connection Table::on('mysql')->select(...)->get()

Datenbank / Abfrage-Generator

Sie können auch eine andere Verbindung mit dem Query Builder angeben:

// Using the sqlite connection DB::connection('sqlite')->table('table')->select(...)->get() // Using the mysql connection DB::connection('mysql')->table('table')->select(...)->get()

Gerätetest

Laravel stellt seeInDatabase($table,$fielsArray,$connection) zum Testen des Datenbankverbindungscodes seeInDatabase($table,$fielsArray,$connection) . In der Unit-Testdatei müssen Sie Folgendes tun:

$this ->json( 'GET', 'result1/2015-05-08/2015-08-08/a/123' ) ->seeInDatabase("log", ["field"=>"value"], 'sqlite');

Auf diese Weise weiß Laravel, welche Datenbankverbindung getestet werden soll.

Datenbanktransaktionen im Komponententest

Laravel ermöglicht es der Datenbank, alle Änderungen während der Tests rückgängig zu machen. Um mehrere Datenbankverbindungen testen zu können, müssen Sie die $connectionsToTransact Eigenschaften festlegen

use Illuminate\Foundation\Testing\DatabaseMigrations; class ExampleTest extends TestCase { use DatabaseTransactions;

https://riptutorial.com/de/home 61

Page 78: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$connectionsToTransact =["mysql","sqlite"] //tell Laravel which database need to rollBack public function testExampleIndex() { $this->visit('/action/parameter') ->see('items'); } }

Datenbank online lesen: https://riptutorial.com/de/laravel/topic/1093/datenbank

https://riptutorial.com/de/home 62

Page 79: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 19: Datenbank Seeding

Examples

Seeder ausführen

Sie können Ihren neuen Seeder der DatabaseSeeder-Klasse hinzufügen.

/** * Run the database seeds. * * @return void */ public function run() { $this->call(UserTableSeeder::class); }

Verwenden Sie den Befehl Artisan, um einen Datenbank-Seeder auszuführen

php artisan db:seed

Dadurch wird die DatabaseSeeder-Klasse ausgeführt. Sie können auch die Option --class= um manuell anzugeben, welche Sämaschine ausgeführt werden soll.

* Beachten Sie, dass Sie möglicherweise Composer dumpautoload ausführen müssen, wenn Ihre Seeder-Klasse nicht gefunden werden kann. Dies geschieht normalerweise, wenn Sie manuell eine Seeder-Klasse erstellen, anstatt den Befehl handwerklich zu verwenden.

Einen Samen erstellen

Datenbank-Seeds werden im Verzeichnis / database / seeds gespeichert. Sie können einen Samen mit einem Artisan-Befehl erstellen.

php artisan make:seed UserTableSeeder

Alternativ können Sie eine neue Klasse erstellen, die Illuminate\Database\Seeder . Die Klasse muss eine öffentliche Funktion namens run() .

Daten mit einem Seeder einfügen

Sie können Modelle in einer Sämaschine referenzieren.

use DB; use App\Models\User; class UserTableSeeder extends Illuminate\Database\Seeder{

https://riptutorial.com/de/home 63

Page 80: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

public function run(){ # Remove all existing entrie DB::table('users')->delete() ; User::create([ 'name' => 'Admin', 'email' => '[email protected]', 'password' => Hash::make('password') ]); } }

Einfügen von Daten mit einer Modellfabrik

Möglicherweise möchten Sie Modellfabriken in Ihrem Samen verwenden. Dadurch werden 3 neue Benutzer erstellt.

use App\Models\User; class UserTableSeeder extends Illuminate\Database\Seeder{ public function run(){ factory(User::class)->times(3)->create(); } }

Möglicherweise möchten Sie auch bestimmte Felder in Ihrem Seeding definieren, beispielsweise ein Kennwort. Dadurch werden 3 Benutzer mit demselben Passwort erstellt.

factory(User::class)->times(3)->create(['password' => '123456']);

Seeding mit MySQL Dump

Folgen Sie dem vorherigen Beispiel zum Erstellen eines Seed. In diesem Beispiel wird ein MySQL-Dump zum Seeding einer Tabelle in der Projektdatenbank verwendet. Die Tabelle muss vor dem Seeding erstellt werden.

<?php use Illuminate\Database\Seeder; class UserTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $sql = file_get_contents(database_path() . '/seeds/users.sql'); DB::statement($sql);

https://riptutorial.com/de/home 64

Page 81: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

} }

Unser $ sql wird der Inhalt unseres user.sql-Dumps sein. Der Dump sollte eine INSERT INTO-Anweisung haben. Es liegt an Ihnen, wo Sie Ihre Dumps aufbewahren. Im obigen Beispiel wird es im Projektverzeichnis \database\seeds gespeichert. Verwenden der Hilfsfunktion database_path() laravel und Anhängen des Verzeichnis- und Dateinamens des Speicherauszugs.

INSERT INTO `users` (`id`, `name`, `email`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES (1, 'Jane', '[email protected]', 'superSecret', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00'), (2, 'John', '[email protected]', 'sup3rS3cr3t', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00');

DB::statement($sql) führt die Einfügungen aus, sobald der Seeder ausgeführt wird. Wie in den vorherigen Beispielen können Sie den UserTableSeeder in die von laravel bereitgestellte DatabaseSeeder Klasse einfügen:

<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $this->call(UserTableSeeder::class); } }

und von CLI im Projektverzeichnis php artisan db:seed ausführen. Oder Sie können den Seeder für eine einzelne Klasse mit php artisan db:seed --class=UsersTableSeeder

Verwenden von Faker und ModelFactories zum Generieren von Seeds

1) EINFACHE WEGE

Datenbankgesteuerte Anwendungen benötigen häufig Daten, die zu Test- und Demozwecken in das System eingebettet sind.

Um solche Daten zu erstellen, erstellen Sie zuerst die Seeder-Klasse

ProductTableSeeder

use Faker\Factory as Faker; use App\Product;

https://riptutorial.com/de/home 65

Page 82: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

class ProductTableSeeder extends DatabaseSeeder { public function run() { $faker = $this->getFaker(); for ($i = 0; $i < 10; $i++) { $name = $faker->word; $image = $faker->imageUrl; Modelname::create([ 'name' => $name, 'image' => $image, ]); } } }

Um eine Seeder-Klasse ausführen zu können, müssen Sie sie von der DatabaseSeeder-Klasse aus aufrufen. Geben Sie einfach den Namen der Seeder an, die Sie ausführen möchten:

benutze Illuminate \ Database \ Seeder;

class DatabaseSeeder extends Seeder { protected $faker; public function getFaker() { if (empty($this->faker)) { $faker = Faker\Factory::create(); $faker->addProvider(new Faker\Provider\Base($faker)); $faker->addProvider(new Faker\Provider\Lorem($faker)); } return $this->faker = $faker; } public function run() { $this->call(ProductTableSeeder::class); } }

Vergessen Sie nicht, $ composer dump-autoload auszuführen, nachdem Sie den Seeder erstellt haben, da sie nicht automatisch vom Composer geladen werden (es sei denn, Sie erstellen den Seeder mit dem handwerklichen Befehl $ php artisan make:seeder Name )

Jetzt können Sie mit diesem Handwerker-Befehl säen, indem Sie diesen Befehl php artisan db:seed

2) VERWENDUNG von Modellfabriken

Zunächst definieren Sie einen Standardsatz von Attributen für jedes Modell in App/database/factories/ModelFactory.php

Ein Beispiel für ein User-Modell: So sieht eine ModelFactory aus

$factory->define(App\User::class, function (Faker\Generator $faker) {

https://riptutorial.com/de/home 66

Page 83: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

return [ 'name' => $faker->name, 'email' => $faker->email, 'password' => bcrypt(str_random(10)), 'remember_token' => str_random(10), ]; });

Erstellen Sie jetzt einen Tabellen-Seeder- php artisan make:seeder UsersTableSeeder

Und füge das hinzu

public function run() { factory(App\User::class, 100)->create() }

Fügen Sie diese dann dem DatabaseSeeder

public function run() { $this->call(UsersTableSeeder::class); }

Dadurch wird die Tabelle mit 100 Datensätzen belegt.

Datenbank Seeding online lesen: https://riptutorial.com/de/laravel/topic/1118/datenbank-seeding

https://riptutorial.com/de/home 67

Page 84: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 20: Datenbankmigrationen

Examples

Migrationen

Um Ihre Datenbank in Laravel zu steuern, verwenden Sie Migrationen. Migration mit Handwerker erstellen:

php artisan make:migration create_first_table --create=first_table

Dadurch wird die Klasse CreateFirstTable generiert. Innerhalb der up-Methode können Sie Ihre Spalten erstellen:

<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateFirstTable extends Migration { public function up() { Schema::create('first_table', function (Blueprint $table) { $table->increments('id'); $table->string('first_string_column_name'); $table->integer('secont_integer_column_name'); $table->timestamps(); }); } public function down() { Schema::drop('first_table'); } }

Um alle Migrationsklassen auszuführen, können Sie am Ende den Befehl handwerklich ausführen:

php artisan migrate

Dadurch werden Ihre Tabellen und Spalten in Ihrer Datenbank erstellt. Andere nützliche Migrationsbefehle sind:

php artisan migrate:rollback - Rollback der letzten Datenbankmigration•php artisan migrate:reset - Rollback aller Datenbankmigrationen•php artisan migrate:refresh - Alle Migrationen zurücksetzen und erneut ausführen•php artisan migrate:status - Zeigt den Status jeder Migration an•

Vorhandene Tabellen ändern

https://riptutorial.com/de/home 68

Page 85: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Manchmal müssen Sie Ihre vorhandene Tabellenstruktur ändern, z. B. das renaming/deleting Spalten. Was Sie erreichen können, indem Sie eine neue Migration erstellen. In der up Methode Ihrer Migration.

//Renaming Column. public function up() { Schema::table('users', function (Blueprint $table) { $table->renameColumn('email', 'username'); }); }

Im obigen Beispiel wird die email column der users table in username . Während der Code unten fällt eine Spalte username von users Tabelle.

Improtant: Für Spalten modifizieren müssen Sie hinzufügen doctrine/dbal Abhängigkeit Projekts composer.json Datei und starten composer update , um Änderungen.

//Droping Column public function up() { Schema::table('users', function (Blueprint $table) { $table->dropColumn('username'); }); }

Die Migrationsdateien

Migrationen in einer Laravel 5-Anwendung befinden sich im database/migrations . Ihre Dateinamen entsprechen einem bestimmten Format:

<year>_<month>_<day>_<hour><minute><second>_<name>.php

Eine Migrationsdatei sollte eine Schemaaktualisierung darstellen, um ein bestimmtes Problem zu lösen. Zum Beispiel:

2016_07_21_134310_add_last_logged_in_to_users_table.php

Datenbankmigrationen werden in chronologischer Reihenfolge gespeichert, sodass Laravel weiß, in welcher Reihenfolge sie ausgeführt werden sollen. Laravel führt immer Migrationen vom ältesten zum neuesten durch.

Migrationsdateien generieren

Das Erstellen einer neuen Migrationsdatei mit dem korrekten Dateinamen jedes Mal, wenn Sie Ihr Schema ändern müssen, wäre eine Aufgabe. Glücklicherweise kann der artisan Befehl von Laravel die Migration für Sie generieren:

php artisan make:migration add_last_logged_in_to_users_table

https://riptutorial.com/de/home 69

Page 86: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Sie können auch die --table und --create mit dem obigen Befehl verwenden. Diese sind optional und dienen nur der Bequemlichkeit. Sie fügen den entsprechenden Code für die Druckspeicher in die Migrationsdatei ein.

php artisan make:migration add_last_logged_in_to_users_table --table=users php artisan make:migration create_logs_table --create=logs

Sie können mit der Option --path einen benutzerdefinierten Ausgabepfad für die generierte Migration --path . Der Pfad ist relativ zum Basispfad der Anwendung.

php artisan make:migration --path=app/Modules/User/Migrations

Innerhalb einer Datenbankmigration

Jede Migration sollte eine up() Methode und eine down() Methode haben. Der Zweck der up() -Methode besteht darin, die erforderlichen Operationen auszuführen, um das Datenbankschema in seinen neuen Zustand zu versetzen, und der Zweck der down() -Methode ist es, alle von der up() -Methode ausgeführten Operationen rückgängig zu machen. Um sicherzustellen, dass die down() -Methode Ihre Vorgänge ordnungsgemäß rückgängig macht, ist es äußerst wichtig, dass Sie Änderungen an Datenbankschemas rückgängig machen können.

Eine Beispielmigrationsdatei kann wie folgt aussehen:

<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddLastLoggedInToUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { $table->dateTime('last_logged_in')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { $table->dropColumn('last_logged_in'); }); }

https://riptutorial.com/de/home 70

Page 87: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

}

Bei der Ausführung dieser Migration generiert Laravel die folgende SQL, die für Ihre Datenbank ausgeführt werden kann:

ALTER TABLE `users` ADD `last_logged_in` DATETIME NULL

Migrationen ausführen

Nach dem Ausführen der Migration werden die Vorgänge auf Ihre Datenbank angewendet.

php artisan migrate

Wenn alles gut lief, wird eine Ausgabe ähnlich der folgenden angezeigt:

Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table

Laravel ist klug genug, wenn Sie Migrationen in der Produktionsumgebung ausführen. Wenn Sie feststellen, dass Sie eine destruktive Migration durchführen (z. B. eine, die eine Spalte aus einer Tabelle entfernt), werden Sie vom php artisan migrate Befehl zur Bestätigung aufgefordert. In Umgebungen mit kontinuierlicher Lieferung ist dies möglicherweise nicht erwünscht. Verwenden --force in diesem Fall das Flag --force , um die Bestätigung zu überspringen:

php artisan migrate --force

Wenn Sie nur Migrationen ausgeführt haben, sind Sie möglicherweise verwirrt, wenn eine migrations in Ihrer Datenbank vorhanden ist. Diese Tabelle verwendet Laravel, um zu verfolgen, welche Migrationen bereits ausgeführt wurden. Wenn Sie den migrate ausgeben, ermittelt Laravel, welche Migrationen noch ausgeführt werden müssen, führt sie dann in chronologischer Reihenfolge aus und aktualisiert die migrations entsprechend.

Sie sollten die migrations niemals manuell bearbeiten, es sei denn, Sie wissen absolut, was Sie tun. Es ist sehr einfach, versehentlich Ihre Datenbank in einem fehlerhaften Zustand zu lassen, in dem Ihre Migrationen fehlschlagen.

Migrationen rückgängig machen

Wenn Sie die letzte Migration, dh den letzten Vorgang, rückgängig machen möchten, können Sie den awesome rollback Befehl verwenden. Denken Sie jedoch daran, dass dieser Befehl nur die letzte Migration rückgängig macht, die möglicherweise mehrere Migrationsdateien enthält

php artisan migrate:rollback

Wenn Sie alle Ihre Anwendungsmigrationen rückgängig machen möchten, können Sie den folgenden Befehl verwenden

https://riptutorial.com/de/home 71

Page 88: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

php artisan migrate:reset

Wenn Sie wie ich faul sind und mit einem Befehl zurückrollen und migrieren möchten, können Sie diesen Befehl verwenden

php artisan migrate:refresh php artisan migrate:refresh --seed

Sie können auch die Anzahl der Schritte angeben, die mit der Option step . So wird 1 Schritt zurückgesetzt.

php artisan migrate:rollback --step=1

Datenbankmigrationen online lesen: https://riptutorial.com/de/laravel/topic/1131/datenbankmigrationen

https://riptutorial.com/de/home 72

Page 89: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 21: Dienstleistungen

Examples

Einführung

Laravel ermöglicht den Zugriff auf eine Vielzahl von Klassen, die als Services bezeichnet werden. Einige Dienste sind sofort verfügbar, Sie können sie jedoch selbst erstellen.

Ein Dienst kann in mehreren Dateien der Anwendung wie Controller verwendet werden. Stellen wir uns vor, ein Service OurService implementiert eine getNumber() -Methode, die eine Zufallszahl getNumber() :

class SomeController extends Controller { public function getRandomNumber() { return app(OurService::class)->getNumber(); } }

Um einen Service zu erstellen, müssen Sie nur eine neue Klasse erstellen:

# app/Services/OurService/OurService.php <?php namespace App\Services\OurService; class OurService { public function getNumber() { return rand(); } }

Zu diesem Zeitpunkt könnten Sie diesen Dienst bereits in einem Controller verwenden, müssen jedoch jedes Mal ein neues Objekt instanziieren, wenn Sie es benötigen:

class SomeController extends Controller { public function getRandomNumber() { $service = new OurService(); return $service->getNumber(); } public function getOtherRandomNumber() { $service = new OurService(); return $service->getNumber(); }

https://riptutorial.com/de/home 73

Page 90: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

}

Daher ist der nächste Schritt die Registrierung Ihres Dienstes im Dienstcontainer . Wenn Sie Ihren Dienst im Dienstcontainer registrieren, müssen Sie nicht jedes Mal ein neues Objekt erstellen, wenn Sie es benötigen.

Um einen Dienst im Dienstcontainer zu registrieren, müssen Sie einen Dienstanbieter erstellen. Dieser Dienstanbieter kann:

Registrieren Sie Ihren Service mit der Registrierungsmethode im Service-Container.1. Injizieren anderer Dienste in Ihren Dienst (Abhängigkeiten) mit der Startmethode2.

Ein Service Provider ist eine Klasse, die die abstrakte Klasse Illuminate\Support\ServiceProvider . Es muss die register() -Methode implementiert werden, um einen Dienst im Dienstcontainer zu registrieren :

# app/Services/OurService/OurServiceServiceProvider.php <?php namespace App\Services\OurService; use Illuminate\Support\ServiceProvider; class OurServiceServiceProvider extends ServiceProvider { public function register() { $this->app->singleton('OurService', function($app) { return new OurService(); }); } }

Alle Dienstanbieter werden in einem Array in config/app.php . Also müssen wir unseren Service Provider in diesem Array registrieren:

return [ ... 'providers' => [ ... App\Services\OurService\OurServiceServiceProvider::class, ... ], ... ];

Wir können jetzt auf unseren Service in einer Steuerung zugreifen. Drei Möglichkeiten:

https://riptutorial.com/de/home 74

Page 91: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Abhängigkeitsspritze:1.

<?php namespace App\Http\Controllers; use App\Services\OurService\OurService; class SomeController extends Controller { public function __construct(OurService $our_service) { dd($our_service->getNumber()); } }

Zugriff über den app() Helfer:2.

<?php namespace App\Http\Controllers; use App\Services\OurService\OurService; class SomeController extends Controller { public function getRandomNumber() { return app('OurService')->getNumber(); } }

Laravel bietet Fassaden, imaginäre Kurse, die Sie in allen Ihren Projekten verwenden können und einen Service widerspiegeln. Um auf Ihren Dienst einfacher zuzugreifen, können Sie eine Fassade erstellen:

<?php namespace App\Http\Controllers; use Randomisator; class SomeController extends Controller { public function getRandomNumber() { return Randomisator::getNumber(); } }

Um eine neue Fassade zu erstellen, müssen Sie eine neue Klasse erstellen, die Illuminate\Support\Facades\Facade . Diese Klasse muss die zur Umsetzung getFacadeAccessor() Methode und gibt den Namen eines Dienstes von einem Service Provider registriert:

# app/Services/OurService/OurServiceFacade.php <?php

https://riptutorial.com/de/home 75

Page 92: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

namespace App\Services\OurService; use Illuminate\Support\Facades\Facade; class OurServiceFacade extends Facade { protected static function getFacadeAccessor() { return 'OurService'; } }

Sie müssen Ihre Facade auch in config/app.php :

return [ ... 'aliases' => [ .... 'Randomisator' => App\Services\OurService\OurServiceFacade::class, ], ];

Die Fassade ist jetzt überall in Ihrem Projekt zugänglich.

Wenn Sie von Ihren Ansichten aus auf Ihren Dienst zugreifen möchten, können Sie eine Hilfsfunktion erstellen. Laravel wird mit einigen Helfern ausgeliefert, wie die auth() oder die view() Funktion. Um eine Hilfsfunktion zu erstellen, erstellen Sie eine neue Datei:

# app/Services/OurService/helpers.php if (! function_exists('randomisator')) { /** * Get the available OurService instance. * * @return \App\ElMatella\FacebookLaravelSdk */ function randomisator() { return app('OurService'); } }

Sie müssen diese Datei auch registrieren, jedoch in Ihrer composer.json Datei:

{ ... "autoload": { "files": [ "app/Services/OurService/helpers.php"

https://riptutorial.com/de/home 76

Page 93: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

], ... } }

Sie können diesen Helfer jetzt in einer Ansicht verwenden:

<h1>Here is a random number: {{ randomisator()->getNumber() }}</h1>

Dienstleistungen online lesen: https://riptutorial.com/de/laravel/topic/1907/dienstleistungen

https://riptutorial.com/de/home 77

Page 94: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 22: Dienstleistungen

Examples

Binden einer Schnittstelle an die Implementierung

In einer Service Provider- register können wir eine Schnittstelle an eine Implementierung binden:

public function register() { App::bind( UserRepositoryInterface::class, EloquentUserRepository::class ); }

Von nun an wird jedes Mal, wenn die App eine Instanz von UserRepositoryInterface , eine neue Instanz von EloquentUserRepository automatisch UserRepositoryInterface :

//this will get back an instance of EloquentUserRepository $repo = App::make( UserRepositoryInterface:class );

Instanz binden

Wir können den Service Container als Registry verwenden, indem wir eine Instanz eines Objekts darin binden und zurückholen, wenn wir es brauchen:

// Create an instance. $john = new User('John'); // Bind it to the service container. App::instance('the-user', $john); // ...somewhere and/or in another class... // Get back the instance $john = App::make('the-user');

Binden eines Singleton an den Service-Container

Wir können eine Klasse als Singleton binden:

public function register() { App::singleton('my-database', function() { return new Database(); }); }

Auf diese Weise wird beim ersten Anfordern einer Instanz von 'my-database' an den Service-Container eine neue Instanz erstellt. Alle aufeinanderfolgenden Anforderungen dieser Klasse

https://riptutorial.com/de/home 78

Page 95: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

erhalten die zuerst erstellte Instanz zurück:

//a new instance of Database is created $db = App::make('my-database'); //the same instance created before is returned $anotherDb = App::make('my-database');

Einführung

Der Service Container ist das Hauptanwendungsobjekt. Es kann als Abhängigkeitsinjektionscontainer und als Registrierung für die Anwendung verwendet werden, indem Bindungen in den Dienstanbietern definiert werden

Service Provider sind Klassen, in denen definiert wird, wie unsere Serviceklassen über die Anwendung erstellt werden, ihre Konfiguration booten und Schnittstellen an Implementierungen binden

Dienste sind Klassen, die eine oder mehrere logisch korrelierte Aufgaben zusammenfassen

Verwenden des Service-Containers als Abhängigkeitsinjektionscontainer

Wir können den Service Container als Dependency Injection Container verwenden, indem wir den Erstellungsprozess von Objekten mit ihren Abhängigkeiten an einem Punkt der Anwendung binden

Nehmen wir an, die Erstellung eines PdfCreator benötigt zwei Objekte als Abhängigkeiten. Jedes Mal, wenn wir eine Instanz von PdfCreator , sollten wir diese Abhängigkeiten an den Konstruktor übergeben. Durch die Verwendung des Service-Containers als DIC definieren wir die Erstellung von PdfCreator in der Bindungsdefinition, wobei die erforderliche Abhängigkeit direkt vom Service-Container übernommen wird:

App:bind('pdf-creator', function($app) { // Get the needed dependencies from the service container. $pdfRender = $app->make('pdf-render'); $templateManager = $app->make('template-manager'); // Create the instance passing the needed dependencies. return new PdfCreator( $pdfRender, $templateManager ); });

Um in jedem Punkt unserer App einen neuen PdfCreator , können wir einfach PdfCreator tun:

$pdfCreator = App::make('pdf-creator');

Und der Service-Container erstellt eine neue Instanz mit den für uns erforderlichen Abhängigkeiten.

Dienstleistungen online lesen: https://riptutorial.com/de/laravel/topic/1908/dienstleistungen

https://riptutorial.com/de/home 79

Page 96: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 23: Domainübergreifende Anfrage

Examples

Einführung

Manchmal benötigen wir eine domänenübergreifende Anforderung für unsere APIs in laravel. Wir müssen geeignete Header hinzufügen, um die domänenübergreifende Anforderung erfolgreich abzuschließen. Daher müssen wir sicherstellen, dass die von uns hinzugefügten Header genau sind, andernfalls werden unsere APIs anfällig. Um Header hinzufügen zu können, müssen Sie Middleware in Laravel hinzufügen, um die entsprechenden Header hinzuzufügen und die Anfragen weiterzuleiten.

CorsHeaders

<?php namespace laravel\Http\Middleware; class CorsHeaders { /** * This must be executed _before_ the controller action since _after_ middleware isn't executed when exceptions are thrown and caught by global handlers. * * @param $request * @param \Closure $next * @param string [$checkWhitelist] true or false Is a string b/c of the way the arguments are supplied. * @return mixed */ public function handle($request, \Closure $next, $checkWhitelist = 'true') { if ($checkWhitelist == 'true') { // Make sure the request origin domain matches one of ours before sending CORS response headers. $origin = $request->header('Origin'); $matches = []; preg_match('/^(https?:\/\/)?([a-zA-Z\d]+\.)*(?<domain>[a-zA-Z\d-\.]+\.[a-z]{2,10})$/', $origin, $matches); if (isset($matches['domain']) && in_array($matches['domain'], ['yoursite.com']) { header('Access-Control-Allow-Origin: ' . $origin); header('Access-Control-Expose-Headers: Location'); header('Access-Control-Allow-Credentials: true'); // If a preflight request comes then add appropriate headers if ($request->method() === 'OPTIONS') { header('Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE, PATCH'); header('Access-Control-Allow-Headers: ' . $request->header('Access-Control-Request-Headers')); // 20 days header('Access-Control-Max-Age: 1728000'); }

https://riptutorial.com/de/home 80

Page 97: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

} } else { header('Access-Control-Allow-Origin: *'); } return $next($request); } }

Domainübergreifende Anfrage online lesen: https://riptutorial.com/de/laravel/topic/7425/domainubergreifende-anfrage

https://riptutorial.com/de/home 81

Page 98: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 24: Einführung in Laravel-5.2

Einführung

Laravel ist ein MVC-Framework mit Bundles, Migrationen und Artisan CLI. Laravel bietet ein robustes Set an Tools und eine Anwendungsarchitektur, die viele der besten Funktionen von Frameworks wie CodeIgniter, Yii, ASP.NET MVC, Ruby on Rails, Sinatra und anderen enthält. Laravel ist ein Open Source Framework. Es verfügt über eine Vielzahl an Funktionen, die die Webentwicklung beschleunigen. Wenn Sie sich mit Core PHP und Advanced PHP auskennen, erleichtert Ihnen Laravel Ihre Aufgabe. Das spart viel Zeit.

Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was Laravel-5.1 ist und warum ein Entwickler es verwenden möchte.

Es sollte auch alle großen Themen in Laravel-5.1 erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für laravel-5.1 neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Examples

Installation oder Setup

Anweisungen zur Installation von Laravel 5.1 auf einem Linux / Mac / Unix-Computer.

Überprüfen Sie vor dem Starten der Installation, ob die folgenden Voraussetzungen erfüllt sind:

PHP> = 5.5.9•OpenSSL PHP Extension•PDO PHP-Erweiterung•Mbstring PHP Extension•Tokenizer PHP-Erweiterung•

Beginnen wir mit der Installation:

Composer installieren Komponistendokumentation1. composer create-project laravel/laravel <folder-name> "5.1.*"2. Stellen Sie sicher, dass der storage und der bootstrap/cache Ordner beschreibbar sind.3. Öffnen Sie die .env Datei und legen Sie die Konfigurationsinformationen wie Datenbank-Anmeldeinformationen, Debug-Status, Anwendungsumgebung usw. fest.

4.

Führen Sie den php artisan serve und richten Sie Ihren Browser auf http://localhost:8000 . Wenn alles in Ordnung ist, solltest du die Seite bekommen

5.

Installieren Sie das Laravel 5.1 Framework auf Ubuntu 16.04, 14.04 und

https://riptutorial.com/de/home 82

Page 99: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

LinuxMint

Schritt 1 - Installieren Sie die LAMPE

Um mit Laravel zu beginnen, müssen Sie zunächst einen laufenden LAMP-Server einrichten. Wenn Sie bereits LAMP-Stack ausgeführt haben, überspringen Sie diesen Schritt. Verwenden Sie die folgenden Befehle, um die Lampe auf dem Ubuntu-System einzurichten.

Installieren Sie PHP 5.6

$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install -y php5.6 php5.6-mcrypt php5.6-gd

Installieren Sie Apache2

$ apt-get install apache2 libapache2-mod-php5

Installieren Sie MySQL

$ apt-get install mysql-server php5.6-mysql

Schritt 2 - Installieren Sie Composer

Composer ist für die Installation von Laravel-Abhängigkeiten erforderlich. Verwenden Sie daher die folgenden Befehle zum Herunterladen und Verwenden als Befehl in unserem System.

$ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer $ sudo chmod +x /usr/local/bin/composer

Schritt 3 - Installieren Sie Laravel

Um die neueste Version von Laravel herunterzuladen, verwenden Sie den folgenden Befehl, um das Master-Repo von Laravel aus Github zu kopieren.

$ cd /var/www $ git clone https://github.com/laravel/laravel.git

Navigieren Sie zum Laravel-Codeverzeichnis und installieren Sie mit Composer alle für das Laravel-Framework erforderlichen Abhängigkeiten.

$ cd /var/www/laravel $ sudo composer install

Die Installation von Abhängigkeiten dauert einige Zeit. Danach legen Sie die richtigen Berechtigungen für Dateien fest.

https://riptutorial.com/de/home 83

Page 100: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$ chown -R www-data.www-data /var/www/laravel $ chmod -R 755 /var/www/laravel $ chmod -R 777 /var/www/laravel/app/storage

Schritt 4 - Legen Sie den Verschlüsselungsschlüssel fest

Legen Sie nun den 32-Bit-Zufallszahlen-Verschlüsselungsschlüssel fest, den der Illuminate-Verschlüsselungsdienst verwendet.

$ php artisan key:generate Application key [uOHTNu3Au1Kt7Uloyr2Py9blU0J5XQ75] set successfully.

Bearbeiten config/app.php Konfigurationsdatei config/app.php und aktualisieren Sie den generierten Anwendungsschlüssel wie folgt. Stellen Sie außerdem sicher, dass die Verschlüsselung richtig eingestellt ist.

'key' => env('APP_KEY', 'uOHTNu3Au1Kt7Uloyr2Py9blU0J5XQ75'), 'cipher' => 'AES-256-CBC',

Schritt 5 - Erstellen Sie Apache VirtualHost

Fügen Sie nun in Ihrer Apache-Konfigurationsdatei einen virtuellen Host hinzu, um über das Webbrowser auf das Laravel-Framework zuzugreifen. Erstellen Sie die Apache-Konfigurationsdatei im Verzeichnis /etc/apache2/sites-available/ und fügen Sie den folgenden Inhalt hinzu.

$ vim /etc/apache2/sites-available/laravel.example.com.conf

Dies ist die Dateistruktur des virtuellen Hosts.

<VirtualHost *:80> ServerName laravel.example.com DocumentRoot /var/www/laravel/public <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/laravel> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

Schließlich können Sie die Website aktivieren und den Apache-Dienst mit dem folgenden Befehl erneut laden.

https://riptutorial.com/de/home 84

Page 101: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$ a2ensite laravel.example.com $ sudo service apache2 reload

Schritt 6 - Greifen Sie auf Laravel zu

Zu diesem Zeitpunkt haben Sie das Laravel 5 PHP-Framework auf Ihrem System erfolgreich abgeschlossen. Machen Sie nun eine Hostdatei, um auf Ihre Laravel-Anwendung im Webbrowser zuzugreifen. Ändern Sie 127.0.0.1 mit Ihrem Server ip und laravel.example.com mit Ihrem in Apache konfigurierten Domänennamen.

$ sudo echo "127.0.0.1 laravel.example.com" >> /etc/hosts

Greifen Sie auf http://laravel.example.com in Ihrem bevorzugten Webbrowser wie folgt zu.

Einführung in Laravel-5.2 online lesen: https://riptutorial.com/de/laravel/topic/1987/einfuhrung-in-laravel-5-2

https://riptutorial.com/de/home 85

Page 102: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 25: Einführung in Laravel-5.3

Einführung

Neue Funktionen, Verbesserungen und Änderungen von Laravel 5.2 zu 5.3

Examples

Die Variable $ loop

Seit einiger Zeit ist bekannt, dass der Umgang mit Schleifen in Blade begrenzt ist. Ab 5.3 steht eine Variable namens $loop Verfügung

@foreach($variables as $variable) // Within here the `$loop` variable becomes available // Current index, 0 based $loop->index; // Current iteration, 1 based $loop->iteration; // How many iterations are left for the loop to be complete $loop->remaining; // Get the amount of items in the loop $loop->count; // Check to see if it's the first iteration ... $loop->first; // ... Or last iteration $loop->last; //Depth of the loop, ie if a loop within a loop the depth would be 2, 1 based counting. $loop->depth; // Get's the parent `$loop` if the loop is nested, else null $loop->parent; @endforeach

Einführung in Laravel-5.3 online lesen: https://riptutorial.com/de/laravel/topic/9231/einfuhrung-in-laravel-5-3

https://riptutorial.com/de/home 86

Page 103: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 26: Eloquent: Accessors & Mutators

Einführung

Mithilfe von Accessoren und Mutatoren können Sie Eloquent-Attributwerte formatieren, wenn Sie sie für Modellinstanzen abrufen oder festlegen. Beispielsweise möchten Sie den Laravel-Verschlüsseler verwenden, um einen Wert zu verschlüsseln, während er in der Datenbank gespeichert ist, und das Attribut dann automatisch zu entschlüsseln, wenn Sie auf ein Eloquent-Modell zugreifen. Neben benutzerdefinierten Accessoren und Mutatoren kann Eloquent Datumsfelder automatisch in Carbon-Instanzen oder sogar Textfelder in JSON umwandeln.

Syntax

setze {ATTRIBUTE} Attribut ($ -Attribut) // im Kamelfall•

Examples

Definieren eines Accessors

<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * Get the user's first name. * * @param string $value * @return string */ public function getFirstNameAttribute($value) { return ucfirst($value); } }

Accessor bekommen:

Wie Sie sehen, wird der ursprüngliche Wert der Spalte an den Accessor übergeben, sodass Sie den Wert bearbeiten und zurückgeben können. Um auf den Wert des Accessors zuzugreifen, können Sie einfach auf das first_name Attribut einer Modellinstanz zugreifen:

$user = App\User::find(1); $firstName = $user->first_name;

https://riptutorial.com/de/home 87

Page 104: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Mutator definieren

class User extends Model { public function setPasswordAttribute($password) { $this->attributes['password'] = bcrypt($password); } ... }

Mit dem obigen Code wird jedes Mal "verschlüsselt", wenn die Kennworteigenschaft festgelegt wird.

$user = $users->first(); $user->password = 'white rabbit'; //laravel calls mutator on background $user->save(); // password is bcrypted and one does not need to call bcrypt('white rabbit')

Eloquent: Accessors & Mutators online lesen: https://riptutorial.com/de/laravel/topic/8305/eloquent--accessors--amp--mutators

https://riptutorial.com/de/home 88

Page 105: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 27: Eloquent: Beziehung

Examples

Fragen zu Beziehungen abfragen

Mit Eloquent können Sie auch nach definierten Beziehungen abfragen, wie unten gezeigt:

User::whereHas('articles', function (Builder $query) { $query->where('published', '!=', true); })->get();

Dies setzt voraus, dass der Name Ihrer Beziehungsmethode in diesem Fall articles ist. Das in die Schließung übergebene Argument ist der Query Builder für das zugehörige Modell. Sie können hier also jede andere Abfrage verwenden.

Eifriges Laden

Angenommen, das Benutzermodell hat eine Beziehung zum Artikelmodell und Sie möchten die zugehörigen Artikel gerne laden. Dies bedeutet, dass die Artikel des Benutzers geladen werden, während der Benutzer abgerufen wird.

articles ist der Beziehungsname (Methode) im Benutzermodell.

User::with('articles')->get();

wenn Sie mehrere Beziehungen haben. zum Beispiel Artikel und Beiträge.

User::with('articles','posts')->get();

und geschachtelte Beziehungen auswählen

User::with('posts.comments')->get();

Rufen Sie mehr als eine verschachtelte Beziehung an

User::with('posts.comments.likes')->get()

Verwandte Modelle einfügen

Angenommen, Sie haben ein Post Modell mit einer hasMany Beziehung zu Comment . Sie können ein Comment Objekt einfügen, das sich auf einen Beitrag bezieht, indem Sie folgende Schritte Comment :

$post = Post::find(1); $commentToAdd = new Comment(['message' => 'This is a comment.']);

https://riptutorial.com/de/home 89

Page 106: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$post->comments()->save($commentToAdd);

Sie können mit der saveMany Funktion mehrere Modelle gleichzeitig saveMany :

$post = Post::find(1); $post->comments()->saveMany([ new Comment(['message' => 'This a new comment']), new Comment(['message' => 'Me too!']), new Comment(['message' => 'Eloquent is awesome!']) ]);

Alternativ gibt es auch eine create Methode, die ein einfaches PHP-Array anstelle einer Eloquent-Modellinstanz akzeptiert.

$post = Post::find(1); $post->comments()->create([ 'message' => 'This is a new comment message' ]);

Einführung

Eloquente Beziehungen werden als Funktionen in Ihren Eloquent-Modellklassen definiert. Da Beziehungen wie Eloquent-Modelle selbst auch als leistungsstarke Abfrageersteller dienen, bietet das Definieren von Beziehungen als Funktionen leistungsstarke Methoden zur Verkettung und Abfrage von Methoden. Zum Beispiel können wir zusätzliche Einschränkungen für diese Beitragsbeziehung verketten:

$user->posts()->where('active', 1)->get();

Navigieren Sie zum übergeordneten Thema

Beziehungstypen

Eins zu vielen

Nehmen wir an, dass jeder Beitrag einen oder mehrere Kommentare haben kann und jeder Kommentar zu einem einzigen Beitrag gehört.

so wird die Kommentartabelle post_id . In diesem Fall sind die Beziehungen wie folgt.

Post Model

public function comments() { return $this->belongsTo(Post::class); }

https://riptutorial.com/de/home 90

Page 107: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Wenn der Fremdschlüssel nicht post_id , lautet der example_post_id .

public function comments() { return $this->belongsTo(Post::class, 'example_post_id'); }

und, wenn der lokale Schlüssel anders als id , ist beispielsweise der lokale Schlüssel other_id

public function comments() { return $this->belongsTo(Post::class, 'example_post_id', 'other_id'); }

Kommentarmodell

Umkehrung von eins zu vielen definieren

public function post() { return $this->hasMany(Comment::class); }

Eins zu eins

Zuordnung zwischen zwei Modellen (Beispiel: User und Phone )

App\User

<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * Get the phone record associated with the user. */ public function phone() { return $this->hasOne('Phone::class', 'foreign_key', 'local_key'); } }

App\Phone

<?php namespace App; use Illuminate\Database\Eloquent\Model;

https://riptutorial.com/de/home 91

Page 108: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

class Phone extends Model { /** * Get the user that owns the phone. */ public function user() { return $this->belongsTo('User::class', 'foreign_key', 'local_key'); } }

foreign_key : Standardmäßig geht Eloquent davon aus, dass es sich um other_model_name_id (in diesem Fall user_id und phone_id ). Ändern Sie ihn, falls dies nicht der Fall ist.

local_key : Eloquent geht standardmäßig davon aus, dass es sich um eine id (aktuelles Modell-Primärschlüssel) handelt. Ändern Sie ihn, falls dies nicht der Fall ist.

Wenn der Name Ihrer Datenbank gemäß dem Laravel-Standard abgelegt wurde, müssen Sie bei der Beziehungsdeklaration keinen Fremdschlüssel und keinen lokalen Schlüssel angeben

Erläuterung

Viel zu viel

Nehmen wir an, es gibt Rollen und Berechtigungen. Jede Rolle kann zu vielen Berechtigungen gehören und jede Berechtigung kann zu vielen Rollen gehören. also gibt es 3 tische. zwei Modelle und ein Pivot-Tisch. eine roles , users und permission_role .

Vorbild

public function permissions() { return $this->belongsToMany(Permission::class); }

Zulassungsmodell

public function roles() { return $this->belongsToMany(Roles::class); }

Anmerkung 1

Beachten Sie Folgendes, wenn Sie einen anderen Tabellennamen für die Pivot-Tabelle verwenden.

Angenommen, Sie möchten role_permission anstelle von permission_role , da eloquent die alphabetische Reihenfolge zum role_permission der Pivot-Schlüsselnamen verwendet. Als zweiten

https://riptutorial.com/de/home 92

Page 109: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Parameter müssen Sie den Namen der Pivot-Tabelle wie folgt übergeben.

Vorbild

public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission'); }

Zulassungsmodell

public function roles() { return $this->belongsToMany(Roles::class, 'role_permission'); }

Anmerkung 2

Beachten Sie Folgendes, wenn Sie unterschiedliche Schlüsselnamen in der Pivot-Tabelle verwenden.

Eloquent geht davon aus, dass, wenn keine Schlüssel als dritter und vierter Parameter übergeben werden, es die singulären Tabellennamen mit _id . Es wird also davon role_id dass der Drehpunkt die Felder role_id und permission_id . Wenn andere Schlüssel als diese verwendet werden sollen, sollten sie als dritter und vierter Parameter übergeben werden.

Sagen wir, wenn other_role_id anstelle von role_id und other_permission_id anstelle von permission_id verwendet werden soll. Es wäre also wie folgt.

Vorbild

public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission', 'other_role_id', 'other_permission_id'); }

Zulassungsmodell

public function roles() { return $this->belongsToMany(Roles::class, 'role_permission', 'other_permission_id', 'other_role_id'); }

Polymorph

Durch polymorphe Beziehungen kann ein Modell zu mehr als einem anderen Modell in einer einzelnen Assoziation gehören. Ein gutes Beispiel wären Bilder, sowohl ein Benutzer als auch ein Produkt können ein Bild haben. Die Tabellenstruktur könnte folgendermaßen aussehen:

https://riptutorial.com/de/home 93

Page 110: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

user id - integer name - string email - string product id - integer title - string SKU - string image id - integer url - string imageable_id - integer imageable_type - string

Die wichtigsten zu betrachtenden Spalten befinden sich in der Bildtabelle. Die Spalte mit dem Namen " imageable_id " enthält den ID-Wert des Benutzers oder des Produkts, während die Spalte mit dem Namen " imageable_type den Klassennamen des Besitzermodells enthält. In Ihren Modellen richten Sie die Beziehungen wie folgt ein:

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Image extends Model { /** * Get all of the owning imageable models. */ public function imageable() { return $this->morphTo(); } } class User extends Model { /** * Get all of the user's images. */ public function images() { return $this->morphMany('Image::class', 'imageable'); } } class Product extends Model { /** * Get all of the product's images. */ public function images() { return $this->morphMany('Image::class', 'imageable'); } }

https://riptutorial.com/de/home 94

Page 111: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Sie können den Besitzer einer polymorphen Beziehung auch aus dem polymorphen Modell abrufen, indem Sie auf den Namen der Methode zugreifen, die den Aufruf von morphTo . In unserem Fall ist dies die imageable Methode des Image-Modells. Wir werden also auf diese Methode als dynamische Eigenschaft zugreifen

$image = App\Image::find(1); $imageable = $image->imageable;

Dieses imageable gibt entweder einen Benutzer oder ein Produkt zurück.

Viel zu viel

Nehmen wir an, es gibt Rollen und Berechtigungen. Jede Rolle kann zu vielen Berechtigungen gehören und jede Berechtigung kann zu vielen Rollen gehören. also gibt es 3 tische. zwei Modelle und ein Pivot-Tisch. eine roles , users und permission_role .

Vorbild

public function permissions() { return $this->belongsToMany(Permission::class); }

Zulassungsmodell

public function roles() { return $this->belongsToMany(Roles::class); }

Anmerkung 1

Beachten Sie Folgendes, wenn Sie einen anderen Tabellennamen für die Pivot-Tabelle verwenden.

Angenommen, Sie möchten role_permission anstelle von permission_role , da eloquent die alphabetische Reihenfolge zum role_permission der Pivot-Schlüsselnamen verwendet. Als zweiten Parameter müssen Sie den Namen der Pivot-Tabelle wie folgt übergeben.

Vorbild

public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission'); }

Zulassungsmodell

public function roles()

https://riptutorial.com/de/home 95

Page 112: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

{ return $this->belongsToMany(Roles::class, 'role_permission'); }

Anmerkung 2

Beachten Sie Folgendes, wenn Sie unterschiedliche Schlüsselnamen in der Pivot-Tabelle verwenden.

Eloquent geht davon aus, dass, wenn keine Schlüssel als dritter und vierter Parameter übergeben werden, es die singulären Tabellennamen mit _id . Es wird also davon role_id dass der Drehpunkt die Felder role_id und permission_id . Wenn andere Schlüssel als diese verwendet werden sollen, sollten sie als dritter und vierter Parameter übergeben werden.

Sagen wir, wenn other_role_id anstelle von role_id und other_permission_id anstelle von permission_id verwendet werden soll. Es wäre also wie folgt.

Vorbild

public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission', 'other_role_id', 'other_permission_id'); }

Zulassungsmodell

public function roles() { return $this->belongsToMany(Roles::class, 'role_permission', 'other_permission_id', 'other_role_id'); }

Zugriff auf die Zwischentabelle mit withPivot ()

Angenommen, Sie haben eine dritte Spalte " permission_assigned_date " in der Pivot-Tabelle. Standardmäßig sind nur die Modellschlüssel im Pivot-Objekt vorhanden. Um diese Spalte im Abfrageergebnis zu erhalten, müssen Sie den Namen in der Funktion withPivot () hinzufügen.

public function permissions() { return $this->belongsToMany(Permission::class, 'role_permission', 'other_role_id', 'other_permission_id')->withPivot('permission_assigned_date'); }

Anbringen / Abnehmen

Eloquent bietet auch einige zusätzliche Hilfsmethoden, um das Arbeiten mit verwandten Modellen zu erleichtern. Nehmen wir beispielsweise an, ein Benutzer kann viele Rollen haben und eine Rolle kann viele Berechtigungen haben. Um einer Berechtigung eine Rolle zuzuordnen, indem Sie einen Datensatz in die Zwischentabelle einfügen, die die Modelle verbindet, verwenden Sie die

https://riptutorial.com/de/home 96

Page 113: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Methode attach:

$role= App\Role::find(1); $role->permissions()->attach($permissionId);

Beim Anhängen einer Beziehung an ein Modell können Sie auch ein Array zusätzlicher Daten übergeben, die in die Zwischentabelle eingefügt werden sollen:

$rol->roles()->attach($permissionId, ['permission_assigned_date' => $date]);

Um eine bestimmte Berechtigung für eine Rolle zu entfernen, verwenden Sie die Trennungsfunktion

$role= App\Role::find(1); //will remove permission 1,2,3 against role 1 $role->permissions()->detach([1, 2, 3]);

Zuordnungen synchronisieren

Sie können die Synchronisationsmethode auch verwenden, um viele-zu-viele-Verknüpfungen aufzubauen. Die Synchronisationsmethode akzeptiert ein Array von IDs, die in der Zwischentabelle platziert werden sollen. IDs, die sich nicht im angegebenen Array befinden, werden aus der Zwischentabelle entfernt. Nach Abschluss dieses Vorgangs sind also nur die IDs des angegebenen Arrays in der Zwischentabelle vorhanden:

//will keep permission id's 1,2,3 against Role id 1 $role= App\Role::find(1) $role->permissions()->sync([1, 2, 3]);

Eloquent: Beziehung online lesen: https://riptutorial.com/de/laravel/topic/7960/eloquent--beziehung

https://riptutorial.com/de/home 97

Page 114: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 28: Eloquent: Modell

Examples

Ein Modell erstellen

Modellerstellung

Modellklassen müssen Illuminate\Database\Eloquent\Model . Der Standardspeicherort für Modelle ist das Verzeichnis /app .

Eine Modellklasse kann leicht mit dem Artisan- Befehl generiert werden:

php artisan make:model [ModelName]

Dadurch wird standardmäßig eine neue PHP-Datei mit dem Namen [ModelName].php in app/ [ModelName].php enthält die gesamte Grundplatte für Ihr neues Modell, einschließlich der Klasse, des Namespaces und der Verwendung, die für eine grundlegende Einrichtung erforderlich sind.

Wenn Sie eine Migrationsdatei zusammen mit Ihrem Modell erstellen möchten, verwenden Sie den folgenden Befehl, wobei -m auch die Migrationsdatei generiert:

php artisan make:model [ModelName] -m

Neben dem Erstellen des Modells wird eine Datenbankmigration erstellt, die mit dem Modell verbunden ist. Die PHP-Datei für die Datenbankmigration befindet sich standardmäßig in der database/migrations/ . Dies schließt standardmäßig keine anderen created_at als die Spalten id und created_at / updated_at müssen Sie die Datei bearbeiten, um zusätzliche Spalten bereitzustellen.

Beachten Sie, dass Sie die Migration ausführen müssen (sobald Sie die Migrationsdatei eingerichtet haben), damit das Modell mithilfe von php artisan migrate vom Projektstamm aus

Wenn Sie später eine Migration hinzufügen möchten, nachdem Sie das Modell erstellt haben, können Sie Folgendes ausführen:

php artisan make:migration [migration name]

Angenommen, Sie möchten ein Modell für Ihre Katzen erstellen, Sie hätten zwei Möglichkeiten, sie mit oder ohne Migration zu erstellen. Sie würden sich für die Erstellung ohne Migration entscheiden, wenn Sie bereits über eine Katzentabelle verfügen oder zu diesem Zeitpunkt keine erstellen möchten.

Für dieses Beispiel möchten wir eine Migration erstellen, da wir noch keine Tabelle haben, also den folgenden Befehl ausführen.

https://riptutorial.com/de/home 98

Page 115: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

php artisan make:model Cat -m

Dieser Befehl erstellt zwei Dateien:

Im App-Ordner: app/Cat.php1. Im Datenbankordner: database/migrations/timestamp_creat_cats_table.php2.

Die Datei, an der wir interessiert sind, ist die letztere, da wir über diese Datei entscheiden können, wie die Tabelle aussehen und einschließen soll. Für jede vordefinierte Migration erhalten wir eine automatisch ansteigende ID-Spalte und eine Zeitstempel-Spalte.

Das nachstehende Beispiel eines Extrakts der Migrationsdatei enthält die oben definierten vordefinierten Spalten sowie die Hinzufügung eines Namens der Katze, des Alters und der Farbe:

public function up() { Schema::create('cats', function (Blueprint $table) { $table->increments('id'); //Predefined ID $table->string('name'); //Name $table->integer('age'); //Age $table->string('colour'); //Colour $table->timestamps(); //Predefined Timestamps }); }

Wie Sie sehen, ist es relativ einfach, das Modell und die Migration für eine Tabelle zu erstellen. Um die Migration auszuführen und in Ihrer Datenbank zu erstellen, führen Sie den folgenden Befehl aus:

php artisan migrate

Dadurch werden alle ausstehenden Migrationen in Ihre Datenbank migriert.

Speicherort der Modelldatei

Modelle können dank PSR4 überall gespeichert werden.

Standardmäßig werden Modelle im app Verzeichnis mit dem Namespace App . Für komplexere Anwendungen wird normalerweise empfohlen, Modelle in ihren eigenen Ordnern in einer Struktur zu speichern, die für Ihre Apps-Architektur sinnvoll ist.

Wenn Sie beispielsweise über eine Anwendung Banana.php , die eine Reihe von Früchten als Modelle verwendet, können Sie einen Ordner mit dem Namen app/Fruits erstellen. Banana.php diesem Ordner erstellen Sie Banana.php (unter Beachtung der Namenskonvention von StudlyCase ). Anschließend können Sie die Banana-Klasse erstellen im App\Fruits Namespace:

namespace App\Fruits;

https://riptutorial.com/de/home 99

Page 116: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

use Illuminate\Database\Eloquent\Model; class Banana extends Model { // Implementation of "Banana" omitted }

Modellkonfiguration

Eloquent verfolgt einen Ansatz der "Konvention über die Konfiguration". Durch die Erweiterung der Model alle Modelle erben die unten aufgeführten Eigenschaften. Wenn nicht überschrieben, gelten die folgenden Standardwerte:

Eigentum Beschreibung Standard

protected $connection DB-Verbindungsname Standard-DB-Verbindung

protected $table Tabellenname

Standardmäßig wird der Klassenname in " snake_case konvertiert und in eine snake_case umgewandelt. Beispielsweise wird SpecialPerson zu special_people

protected $primaryKey Tabelle PK id

public $incrementing

Gibt an, ob die IDs automatisch inkrementiert werden

true

public $timestamps

Gibt an, ob das Modell mit einem Zeitstempel versehen werden soll

true

const CREATED_AT

Name der Erstellungszeitstempel-Spalte

created_at

const UPDATED_AT

Name der Spalte für den Änderungszeitstempel

updated_at

protected $dates

Attribute, die zusätzlich zu den Zeitstempelattributen zu DateTime mutiert werden sollten

[]

protected $dateFormat

Format, in dem Datumsattribute beibehalten werden

Standard für den aktuellen SQL-Dialekt.

protected $with Beziehungen zur Modellarbeit []

protected $hidden

Attribute wurden bei der Modellserialisierung weggelassen

[]

protected In der Modell-Serialisierung []

https://riptutorial.com/de/home 100

Page 117: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Eigentum Beschreibung Standard

$visible zulässige Attribute

protected $appends

Attribut-Accessoren zur Modell-Serialisierung hinzugefügt

[]

protected $fillable

Attribute, die massenzuweisbar sind

[]

protected $guarded

Attribute, die bei der Massenzuordnung auf der schwarzen Liste stehen

[*] (Alle Attribute)

protected $touches

Die Beziehungen, die berührt werden sollten, werden gespeichert

[]

protected $perPage

Die Anzahl der für die Paginierung zurückzugebenden Modelle.

15

5,0

Eigentum Beschreibung Standard

protected $casts Attribute, die in native Typen umgewandelt werden sollten []

Aktualisieren Sie ein vorhandenes Modell

$user = User::find(1); $user->name = 'abc'; $user->save();

Sie können auch mehrere Attribute gleichzeitig mit update , für das anschließend kein save erforderlich ist:

$user = User::find(1); $user->update(['name' => 'abc', 'location' => 'xyz']);

Sie können ein Modell auch aktualisieren, ohne es vorher abzufragen:

User::where('id', '>', 2)->update(['location' => 'xyz']);

Wenn Sie keine Änderung an der Zeitmarke updated_at des Modells auslösen möchten, können Sie die touch :

$user = User::find(1); $user->update(['name' => 'abc', 'location' => 'xyz'], ['touch' => false]);

Eloquent: Modell online lesen: https://riptutorial.com/de/laravel/topic/7984/eloquent--modell

https://riptutorial.com/de/home 101

Page 118: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 29: Entfernen Sie public von URL in Laravel

Einführung

Wie man public von der URL in Laravel entfernt, gibt es viele Antworten im Internet, aber der einfachste Weg wird unten beschrieben

Examples

Wie geht das?

Befolgen Sie diese Schritte, um public von der URL zu entfernen

Kopieren Sie die .htaccess Datei aus dem Verzeichnis /public in den Laravel/project .1. server.php die server.php im server.php Laravel/project in index.php .2.

Prost, du wirst jetzt gut sein.

Bitte beachten Sie: Es wurde an Laravel 4.2 , Laravel 5.1 , Laravel 5.2 , Laravel 5.3 getestet.

Ich denke, dies ist der einfachste Weg, um public von der URL zu entfernen.

Entfernen Sie die Öffentlichkeit aus der URL

Umbenennen der server.php in index.php1. Kopieren Sie die .htaccess aus public Ordner root - Ordner2. .htaccess für Statik wie folgt ändern:3.

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/public/ RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]

Manchmal habe ich diese Methode zum Entfernen der public Formular-URL verwendet.

Entfernen Sie public von URL in Laravel online lesen: https://riptutorial.com/de/laravel/topic/9786/entfernen-sie-public-von-url-in-laravel

https://riptutorial.com/de/home 102

Page 119: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 30: Erste Schritte mit Laravel-5.3

Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was Laravel-5.3 ist und warum ein Entwickler es verwenden möchte.

Es sollte auch alle großen Themen in Laravel-5.3 erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für laravel-5.3 neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Examples

Laravel installieren

Bedarf: Auf Ihrem Rechner muss PHP >= 5.6.4 und Composer installiert sein. Sie können die Version von beiden mit dem Befehl überprüfen: Für PHP:

php -v

Ausgabe wie folgt:

PHP 7.0.9 (cli) (built: Aug 26 2016 06:17:04) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

Für Komponist Sie können den Befehl auf Ihrem Terminal / CMD ausführen:

composer --version

Ausgabe wie folgt:

composer version 1.2.1 2016-09-12 11:27:19

Laravel verwendet Composer zum Verwalten seiner Abhängigkeiten. Vergewissern Sie sich daher vor der Verwendung von Laravel, dass Composer auf Ihrem Computer installiert ist.

Über den Laravel Installer

Laden Sie zunächst das Laravel-Installationsprogramm mit Composer herunter:

https://riptutorial.com/de/home 103

Page 120: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

composer global require "laravel/installer"

$HOME/.composer/vendor/bin Sie sicher, dass das $HOME/.composer/vendor/bin (oder das entsprechende Verzeichnis für Ihr Betriebssystem) in $ PATH laravel ist, damit die laravel Datei von laravel von Ihrem System gefunden werden kann.

Nach der Installation erstellt der laravel new Befehl laravel new eine neue Laravel-Installation in dem von Ihnen angegebenen Verzeichnis. Zum Beispiel laravel new blog von Laravel ein Verzeichnis mit dem Namen blog das eine neue Laravel-Installation mit allen bereits installierten Abhängigkeiten von Laravel enthält:

laravel new blog

Über Composer Create-Project

Alternativ können Sie Laravel auch installieren, indem Sie den Befehl Composer create-project in Ihrem Terminal ausgeben:

composer create-project --prefer-dist laravel/laravel blog

Konfiguration

Nachdem Sie die Laravel-Installation abgeschlossen haben, müssen Sie die permissions für die Speicher- und Bootstrap-Ordner festlegen.

Hinweis: Das Festlegen von permissions ist einer der wichtigsten Prozesse, die bei der Installation von Laravel ausgeführt werden müssen.

Lokaler Entwicklungsserver

Wenn Sie PHP lokal installiert haben und Sie möchten , dass PHP-internen Entwicklungs - Server verwenden , um Ihre Anwendung zu bedienen, können Sie die Verwendung serve Artisan Befehl. Dieser Befehl startet einen Entwicklungsserver unter http://localhost:8000 :

php artisan serve

Öffnen Sie die Browseranforderungs-URL http://localhost:8000

Serveranforderungen

Das Laravel-Framework hat einige Systemanforderungen. Natürlich werden alle diese Anforderungen von der virtuellen Maschine von Laravel Homestead erfüllt. Daher wird dringend empfohlen, Homestead als lokale Laravel-Entwicklungsumgebung zu verwenden.

Wenn Sie jedoch Homestead nicht verwenden, müssen Sie sicherstellen, dass Ihr Server die folgenden Anforderungen erfüllt:

https://riptutorial.com/de/home 104

Page 121: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

PHP> = 5.6.4•OpenSSL PHP Extension•PDO PHP-Erweiterung•Mbstring PHP Extension•Tokenizer PHP-Erweiterung•XML PHP Extension•

Lokaler Entwicklungsserver

Wenn Sie PHP lokal installiert haben und Sie möchten , dass PHP-internen Entwicklungs - Server verwenden , um Ihre Anwendung zu bedienen, können Sie die Verwendung serve Artisan Befehl. Dieser Befehl startet einen Entwicklungsserver unter http://localhost:8000 :

php artisan serve

Natürlich stehen über Homestead und Valet robustere lokale Entwicklungsoptionen zur Verfügung.

Es ist auch möglich, einen benutzerdefinierten Port zu verwenden, etwa 8080 . Sie können dies mit der Option --port tun.

php artisan serve --port=8080

Wenn sich in Ihrer hosts-Datei eine lokale Domäne befindet, können Sie den Hostnamen festlegen. Dies kann mit der Option --host .

php artisan serve --host=example.dev

Sie können auch einen benutzerdefinierten Host und Port ausführen. Dies kann mit dem folgenden Befehl ausgeführt werden.

php artisan serve --host=example.dev --port=8080

Hallo Weltbeispiel (Basic) und mit einer Ansicht

Das grundlegende Beispiel Öffnen routes/web.php Datei routes/web.php und fügen Sie den folgenden Code in die Datei ein:

Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });

" helloworld " fungiert hier als Seitenname, auf den Sie zugreifen möchten.

Wenn Sie keine Blade-Datei erstellen möchten und trotzdem direkt auf die Seite zugreifen möchten, können Sie das Laravel-Routing auf diese Weise verwenden

localhost/helloworld Sie jetzt localhost/helloworld in die Adressleiste des Browsers ein, und Sie

https://riptutorial.com/de/home 105

Page 122: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

können auf die Seite zugreifen, die Hello World anzeigt.

Der nächste Schritt. Sie haben also gelernt, eine sehr einfache Hello World zu erstellen! Seite, indem Sie einen Hallo Welt Satz zurücksenden. Aber wir können es ein bisschen schöner machen!

Schritt 1. Wir beginnen jetzt wieder mit unserer Datei routes/web.php , anstatt den Code oben zu verwenden, verwenden wir den folgenden Code:

Route::get('helloworld', function() { return view('helloworld'); });

Der Rückgabewert dieses Mal ist nicht nur ein einfacher Text aus der Welt der helloworld, sondern eine Ansicht. Eine Ansicht in Laravel ist einfach eine neue Datei. Diese Datei "helloworld" enthält den HTML-Code und möglicherweise später sogar etwas PHP des Helloworld-Textes.

Schritt 2. Nun, da wir unsere Route angepasst haben, um eine Ansicht aufzurufen, werden wir die Ansicht erstellen. Laravel arbeitet mit Blade.php-Dateien in Ansichten. In diesem Fall heißt unsere Route helloworld. Daher wird unsere Ansicht helloworld.blade.php

Wir erstellen die neue Datei im Verzeichnis resources/views und nennen sie helloworld.blade.php

Jetzt öffnen wir diese neue Datei und bearbeiten sie, indem wir unseren Hello World-Satz erstellen. Wir können mehrere verschiedene Methoden hinzufügen, um unseren Satz zu erhalten, wie im folgenden Beispiel.

<html> <body> <h1> Hello World! </h1> <?php echo "Hello PHP World!"; ?> </body> </html>

Gehen Sie nun zu Ihrem Browser und geben Sie Ihre Route erneut wie im einfachen Beispiel ein: localhost/helloworld Sie sehen Ihre neu erstellte Ansicht mit allen Inhalten!

Hallo Weltbeispiel (Basic)

Routendatei öffnen Fügen Sie den folgenden Code ein:

Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });

https://riptutorial.com/de/home 106

Page 123: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Nach dem http://localhost/helloworld wird Hello World http://localhost/helloworld .

Die /routes/web.php befindet sich /routes/web.php

Webserver-Konfiguration für hübsche URLs

Wenn Sie Laravel über Composer or the Laravel installer , benötigen Sie nachfolgend die Konfiguration.

Die Konfiguration für Apache Laravel enthält eine public/.htaccess Datei, die dazu verwendet wird, URLs ohne den front-Controller index.php im Pfad bereitzustellen. Aktivieren Sie vor dem Servieren von Laravel mit Apache das Modul mod_rewrite damit die .htaccess Datei vom Server .htaccess wird.

Wenn die mit Laravel gelieferte .htaccess Datei bei Ihrer Apache-Installation nicht funktioniert, versuchen Sie diese Alternative:

Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]

Konfiguration für Nginx Wenn Sie Nginx verwenden, leitet die folgende Anweisung in Ihrer Site-Konfiguration alle Anforderungen an den Front Controller von index.php :

location / { try_files $uri $uri/ /index.php?$query_string; }

Wenn Sie Homestead oder Valet verwenden , werden natürlich hübsche URLs automatisch konfiguriert.

Erste Schritte mit Laravel-5.3 online lesen: https://riptutorial.com/de/laravel/topic/8602/erste-schritte-mit-laravel-5-3

https://riptutorial.com/de/home 107

Page 124: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 31: Fehlerbehandlung

Bemerkungen

Denken Sie daran, Ihre Anwendung für den E-Mail- config/mail.php einzurichten, indem Sie die korrekte Konfiguration von config/mail.php

Überprüfen Sie auch, ob die ENV-Variablen richtig eingestellt sind.

Dieses Beispiel ist ein Leitfaden und ist minimal. Untersuchen, ändern und gestalten Sie die Ansicht wie gewünscht. Passen Sie den Code an Ihre Bedürfnisse an. Legen Sie beispielsweise den Empfänger in Ihrer .env- Datei fest

Examples

Fehlerbericht-E-Mail senden

Ausnahmen in Laravel werden von App \ Exceptions \ Handler.php behandelt

Diese Datei enthält standardmäßig zwei Funktionen. Berichten und Rendern Wir werden nur die erste verwenden

public function report(Exception $e)

Mit der Report-Methode werden Ausnahmen protokolliert oder an einen externen Dienst wie BugSnag gesendet. Standardmäßig übergibt die Berichtsmethode die Ausnahme einfach an die Basisklasse, in der die Ausnahme protokolliert wird. Sie können jedoch Ausnahmen beliebig protokollieren.

Im Wesentlichen leitet diese Funktion den Fehler weiter und tut nichts. Daher können wir eine Geschäftslogik einfügen, um Operationen basierend auf dem Fehler auszuführen. Für dieses Beispiel senden wir eine E-Mail mit den Fehlerinformationen.

public function report(Exception $e) { if ($e instanceof \Exception) { // Fetch the error information we would like to // send to the view for emailing $error['file'] = $e->getFile(); $error['code'] = $e->getCode(); $error['line'] = $e->getLine(); $error['message'] = $e->getMessage(); $error['trace'] = $e->getTrace(); // Only send email reports on production server if(ENV('APP_ENV') == "production"){ #1. Queue email for sending on "exceptions_emails" queue #2. Use the emails.exception_notif view shown below #3. Pass the error array to the view as variable $e

https://riptutorial.com/de/home 108

Page 125: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Mail::queueOn('exception_emails', 'emails.exception_notif', ["e" => $error], function ($m) { $m->subject("Laravel Error"); $m->from(ENV("MAIL_FROM"), ENV("MAIL_NAME")); $m->to("[email protected]", "Webmaster"); }); } } // Pass the error on to continue processing return parent::report($e); }

Die Ansicht für die E-Mail ("emails.exception_notif") befindet sich unten

<?php $action = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getActionName() : "n/a"; $path = (\Route::getCurrentRoute()) ? \Route::getCurrentRoute()->getPath() : "n/a"; $user = (\Auth::check()) ? \Auth::user()->name : 'no login'; ?> There was an error in your Laravel App<br /> <hr /> <table border="1" width="100%"> <tr><th >User:</th><td>{{ $user }}</td></tr> <tr><th >Message:</th><td>{{ $e['message'] }}</td></tr> <tr><th >Action:</th><td>{{ $action }}</td></tr> <tr><th >URI:</th><td>{{ $path }}</td></tr> <tr><th >Line:</th><td>{{ $e['line'] }}</td></tr> <tr><th >Code:</th><td>{{ $e['code'] }}</td></tr> </table>

Anwendungsweite ModelNotFoundException abfangen

app \ Exceptions \ Handler.php

public function render($request, Exception $exception) { if ($exception instanceof ModelNotFoundException) { abort(404); } return parent::render($request, $exception); }

Sie können jede in Laravel geworfene Ausnahme abfangen / behandeln.

Fehlerbehandlung online lesen: https://riptutorial.com/de/laravel/topic/2858/fehlerbehandlung

https://riptutorial.com/de/home 109

Page 126: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 32: Formularanforderung (en)

Einführung

Benutzerdefinierte Anforderungen (oder Formularanforderungen) sind in Situationen nützlich, in denen eine Anforderung autorisiert und validiert werden soll, bevor die Controller-Methode ausgeführt wird.

Es gibt zwei praktische Verwendungszwecke: Erstellen und Aktualisieren eines Datensatzes, während für jede Aktion unterschiedliche Validierungs- (oder Berechtigungs-) Regeln gelten.

Die Verwendung von Formularanfragen ist trivial, man muss die Anforderungsklasse in method eingeben.

Syntax

PHP Handwerker make: request name_of_request•

Bemerkungen

Anfragen sind hilfreich, wenn Sie Ihre Validierung vom Controller trennen. Sie können auch überprüfen, ob die Anforderung autorisiert ist.

Examples

Anfragen erstellen

php artisan make:request StoreUserRequest php artisan make:request UpdateUserRequest

Hinweis : Sie können auch die Verwendung von Namen wie StoreUser oder UpdateUser (ohne Anhang " Request" ) in Betracht ziehen, da sich Ihre FormRequests im Ordner app/Http/Requests/ Http app/Http/Requests/ .

Formularanforderung verwenden

Nehmen wir an, wir fahren mit dem Anwenderbeispiel fort (möglicherweise verfügen Sie über einen Controller mit Speichermethode und Aktualisierungsmethode). Um FormRequests zu verwenden, verwenden Sie Typanweisungen für die jeweilige Anforderung.

... public function store(App\Http\Requests\StoreRequest $request, App\User $user) { //by type-hinting the request class, Laravel "runs" StoreRequest

https://riptutorial.com/de/home 110

Page 127: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

//before actual method store is hit //logic that handles storing new user //(both email and password has to be in $fillable property of User model $user->create($request->only(['email', 'password'])); return redirect()->back(); } ... public function update(App\Http\Requests\UpdateRequest $request, App\User $users, $id) { //by type-hinting the request class, Laravel "runs" UpdateRequest //before actual method update is hit //logic that handles updating a user //(both email and password has to be in $fillable property of User model $user = $users->findOrFail($id); $user->update($request->only(['password'])); return redirect()->back(); }

Umleitungen nach der Validierung behandeln

Manchmal möchten Sie sich anmelden, um zu bestimmen, wohin der Benutzer nach dem Senden eines Formulars weitergeleitet wird. Formularanfragen bieten verschiedene Möglichkeiten.

Standardmäßig sind 3 Variablen in der Request $redirect , $redirectRoute und $redirectAction deklariert.

getRedirectUrl() diesen 3 Variablen können Sie den Main-Redirect-Handler getRedirectUrl() .

Nachstehend finden Sie eine Musteranfrage, in der beschrieben wird, was Sie tun können.

<?php namespace App; use Illuminate\Foundation\Http\FormRequest as Request; class SampleRequest extends Request { // Redirect to the given url public $redirect; // Redirect to a given route public $redirectRoute; // Redirect to a given action public $redirectAction; /** * Get the URL to redirect to on a validation error. * * @return string */ protected function getRedirectUrl() {

https://riptutorial.com/de/home 111

Page 128: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

// If no path is given for `url()` it will return a new instance of `Illuminate\Routing\UrlGenerator` // If your form is down the page for example you can redirect to a hash return url()->previous() . '#contact'; //`url()` provides several methods you can chain such as // Get the current URL return url()->current(); // Get the full URL of the current request return url()->full(); // Go back return url()->previous(); // Or just redirect back return redirect()->back(); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return []; } /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } }

Formularanforderung (en) online lesen: https://riptutorial.com/de/laravel/topic/6329/formularanforderung--en-

https://riptutorial.com/de/home 112

Page 129: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 33: Genehmigung

Einführung

Laravel bietet eine einfache Möglichkeit, Benutzeraktionen für bestimmte Ressourcen zu autorisieren. Mit der Berechtigung können Sie Benutzern gezielt Zugriff auf bestimmte Ressourcen gewähren und anderen Benutzern den Zugriff verweigern. Laravel bietet eine einfache API zum Verwalten von Benutzerautorisierungen mithilfe von Gates und Policies . Gates bieten einen einfachen AuthServiceProvider Ansatz für die Autorisierung mit dem AuthServiceProvider Policies können Sie die Autorisierungslogik anhand von Klassen um Modelle herum organisieren.

Examples

Gates verwenden

Gates sind Schließungen, die bestimmen, ob ein Benutzer eine bestimmte Aktion für eine Ressource ausführen darf. Gates werden in der Regel in der Boot-Methode von AuthServiceProvider und kurz benannt, um AuthServiceProvider , was sie tun. Ein Beispiel für ein Gate, das nur Premium-Benutzern die Anzeige bestimmter Inhalte ermöglicht, sieht folgendermaßen aus:

Gate::define('view-content', function ($user, $content){ return $user->isSubscribedTo($content->id); });

Ein Gate erhält immer eine Benutzerinstanz als erstes Argument. Sie müssen es nicht übergeben, wenn Sie das Gate verwenden. Optional können Sie zusätzliche Argumente wie das betreffende eloquente Modell erhalten.

Aktionen mit Gates autorisieren

Um das Beispiel oben für eine Blade-Vorlage zu verwenden, um den Inhalt für den Benutzer auszublenden, führen Sie normalerweise Folgendes aus:

@can('view-content', $content) <! -- content here --> @endcan

Um die Navigation zum Inhalt vollständig zu verhindern, können Sie in Ihrem Controller Folgendes ausführen:

if(Gate::allows('view-content', $content)){ /* user can view the content */ } OR

https://riptutorial.com/de/home 113

Page 130: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

if(Gate::denies('view-content', $content)){ /* user cannot view content */ }

Hinweis: Sie müssen den aktuell authentifizierten Benutzer nicht an diese Methode übergeben. Laravel übernimmt dies für Sie.

Richtlinien

Richtlinien sind Klassen, mit deren Hilfe Sie die Autorisierungslogik um eine Modellressource herum organisieren können. In unserem vorherigen Beispiel verfügen wir möglicherweise über eine ContentPolicy , die den Benutzerzugriff auf das Content Modell verwaltet.

Um ContentPolicy zu ContentPolicy , bietet laravel einen handwerklichen Befehl. Einfach laufen

php artisan make:policy ContentPolicy

Dadurch wird eine leere Richtlinienklasse erstellt und im Ordner app/Policies abgelegt. Wenn der Ordner nicht vorhanden ist, erstellt Laravel ihn und platziert die Klasse darin.

Nach der Erstellung müssen Richtlinien registriert werden, damit Laravel wissen kann, welche Richtlinien beim Autorisieren von Aktionen für Modelle verwendet werden sollen. Der AuthServiceProvider Laravel, der mit allen neuen Laravel-Installationen AuthServiceProvider wird, verfügt über eine Richtlinieneigenschaft, die Ihre eloquenten Modelle ihren Autorisierungsrichtlinien zuordnet. Alles, was Sie tun müssen, um die Zuordnung zum Array hinzuzufügen.

protected $policies = [ Content::class => ContentPolicy::class, ];

Richtlinien schreiben

Das Schreiben von Policies folgt im Wesentlichen dem Schreiben von Gates . Das Inhaltsgenehmigungsfenster kann als Richtlinie wie folgt umgeschrieben werden:

function view($user, $content) { return $user->isSubscribedTo($content->id); }

Richtlinien können bei Bedarf mehr Methoden enthalten, um alle Autorisierungsfälle für ein Modell zu bearbeiten.

Aktionen mit Richtlinien autorisieren

Über das Benutzermodell

Das Laravel-Benutzermodell enthält zwei Methoden, die bei der Autorisierung mithilfe von Policies

https://riptutorial.com/de/home 114

Page 131: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

hilfreich sind. can und can't Diese beiden können verwendet werden, um zu bestimmen, ob ein Benutzer jeweils eine Berechtigung für ein Modell hat oder nicht.

Um zu überprüfen, ob ein Benutzer einen Inhalt anzeigen kann oder nicht, können Sie Folgendes tun:

if($user->can('view', $content)){ /* user can view content */ } OR if($user->cant('view', $content)){ /* user cannot view content */ }

Über Middleware

Route::get('/contents/{id}, function(Content $content){ /* user can view content */ })->middleware('can:view,content');

Über Controller

Laravel liefert eine Hilfsmethode, genannt authorize , die den Namen der Politik und der damit verbundenen Modell als Argumente übernimmt, und entweder autorisiert die Aktion auf der Grundlage Ihrer Berechtigungslogik oder verweigert die Aktion und wirft einen AuthorizationException , die die Laravel Exception - Handler zu einem wandelt 403 HTTP response .

pubic function show($id) { $content = Content::find($id); $this->authorize('view', $content); /* user can view content */ }

Genehmigung online lesen: https://riptutorial.com/de/laravel/topic/9360/genehmigung

https://riptutorial.com/de/home 115

Page 132: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 34: Handwerker

Syntax

PHP-Handwerker [Befehl] [Optionen] [Argumente]•

Parameter

Befehl Beschreibung

übersichtlich zusammengestellt

Entfernen Sie die kompilierte Klassendatei

Nieder Versetzen Sie die Anwendung in den Wartungsmodus

env Zeigt die aktuelle Rahmenumgebung an

Hilfe Zeigt die Hilfe für einen Befehl an

Liste Listet Befehle auf

Wandern Führen Sie die Datenbankmigrationen aus

optimieren Optimieren Sie den Rahmen für eine bessere Leistung

Dienen Serve die Anwendung auf dem PHP-Entwicklungsserver

basteln Interagieren Sie mit Ihrer Bewerbung

oben Bringen Sie die Anwendung aus dem Wartungsmodus

App Name Legen Sie den Anwendungsnamespace fest

auth: clear-resetsDie abgelaufenen Token für das Zurücksetzen des Kennworts werden gelöscht

Cache: löschen Leeren Sie den Anwendungscache

Cache: Tabelle Erstellen Sie eine Migration für die Cache-Datenbanktabelle

config: cacheErstellen Sie eine Cache-Datei, um das Laden der Konfiguration zu beschleunigen

config: klar Entfernen Sie die Konfigurationscache-Datei

db: Samen Seed die Datenbank mit Datensätzen

Generieren Sie die fehlenden Ereignisse und Listener Ereignis: generieren

https://riptutorial.com/de/home 116

Page 133: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Befehl Beschreibung

basierend auf der Registrierung

Schlüssel: generieren Legen Sie den Anwendungsschlüssel fest

machen: authGrundlegende Anmelde- und Registrierungsansichten und Routen für Scaffold

machen: Konsole Erstellen Sie einen neuen Artisan-Befehl

machen: Controller Erstellen Sie eine neue Controller-Klasse

machen: event Erstellen Sie eine neue Ereignisklasse

machen: job Erstellen Sie eine neue Jobklasse

machen: Zuhörer Erstellen Sie eine neue Ereignis-Listener-Klasse

machen: Middleware Erstellen Sie eine neue Middleware-Klasse

machen: Migration Erstellen Sie eine neue Migrationsdatei

machen: modell Erstellen Sie eine neue Eloquent-Modellklasse

machen: Politik Erstellen Sie eine neue Richtlinienklasse

machen: Anbieter Erstellen Sie eine neue Service Provider-Klasse

Anfrage stellen Erstellen Sie eine neue Formularanforderungsklasse

machen: Sämaschine Erstellen Sie eine neue Seeder-Klasse

machen: test Erstellen Sie eine neue Testklasse

migrieren: installieren Erstellen Sie das Migrationsrepository

migrieren: aktualisierenSetzen Sie alle Migrationen zurück und führen Sie sie erneut aus

migrieren: zurücksetzen Rollback aller Datenbankmigrationen

migrieren: rollback Rollback der letzten Datenbankmigration

migrieren: status Zeigt den Status jeder Migration an

Warteschlange: fehlgeschlagen

Listet alle fehlgeschlagenen Warteschlangenaufträge auf

Warteschlange: fehlgeschlagene Tabelle

Erstellen Sie eine Migration für die Datenbanktabelle für fehlgeschlagene Warteschlangenjobs

https://riptutorial.com/de/home 117

Page 134: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Befehl Beschreibung

Warteschlange: Flush Leeren Sie alle fehlgeschlagenen Warteschlangenjobs

Schlange: Vergiss es Löschen Sie einen fehlgeschlagenen Warteschlangenjob

Warteschlange: Hör zu Hören Sie sich eine bestimmte Warteschlange an

Warteschlange: NeustartStarten Sie die Warteschlangen-Worker-Daemons nach ihrem aktuellen Job neu

Warteschlange: erneut versuchen

Wiederholen Sie einen fehlgeschlagenen Warteschlangenjob

Warteschlange: TabelleErstellen Sie eine Migration für die Datenbanktabelle der Warteschlangenjobs

Schlange: Arbeit Verarbeiten Sie den nächsten Job in einer Warteschlange

route: cacheErstellen Sie eine Route-Cache-Datei für eine schnellere Routenregistrierung

weg: klar Entfernen Sie die Route-Cache-Datei

route: liste Alle registrierten Routen auflisten

Zeitplan: ausführen Führen Sie die geplanten Befehle aus

Sitzung: Tisch Erstellen Sie eine Migration für die Sitzungsdatenbanktabelle

Verkäufer: veröffentlichenVeröffentlichen Sie alle publizierbaren Elemente aus Lieferantenpaketen

Ansicht: klar Löschen Sie alle kompilierten Ansichtsdateien

Examples

Einführung

Artisan ist ein Dienstprogramm, mit dem Sie bestimmte wiederkehrende Aufgaben mit Bash-Befehlen ausführen können. Es umfasst viele Aufgaben, darunter: die Arbeit mit Datenbank - Migrationen und Säen , Cache zu löschen, notwendigen Dateien für die Authentifizierung Setup erstellen, machen neue Controller, Modelle, Ereignisklassen und vieles mehr.

Artisan ist der Name der in Laravel enthaltenen Befehlszeilenschnittstelle. Es bietet eine Reihe hilfreicher Befehle, die Sie beim Entwickeln Ihrer Anwendung verwenden können.

Um eine Liste aller verfügbaren Artisan-Befehle anzuzeigen, können Sie den Befehl list

https://riptutorial.com/de/home 118

Page 135: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

verwenden:

php artisan list

Um mehr über die verfügbaren Befehle zu erfahren, müssen Sie ihrem Namen lediglich ein Schlüsselwort help voranstellen:

php artisan help [command-name]

Listet alle registrierten Routen auf, die mit mehreren Methoden gefiltert wurden

php artisan route:list --method=GET --method=POST

Dies gilt für alle Routen, die gleichzeitig GET und POST Methoden akzeptieren.

Ausführen von Laravel Artisan-Befehlen mit PHP-Code

Sie können auch Laravel Artisan-Befehle von Ihren Routen oder Controllern verwenden.

So führen Sie einen Befehl mit PHP-Code aus:

Artisan::call('command-name');

Zum Beispiel,

Artisan::call('db:seed');

Neuen handwerklichen Befehl erstellen und registrieren

Sie können neue Befehle über erstellen

php artisan make:command [commandName]

Dadurch wird die Befehlsklasse [commandName] im Verzeichnis app/Console/Commands .

In dieser Klasse finden Sie die protected $signature und protected $description . Sie stehen für den Namen und die Beschreibung Ihres Befehls, der zur Beschreibung Ihres Befehls verwendet wird.

nach Befehl erstellen Sie können Ihren Befehl innerhalb registrieren app/Console/Kernel.php Klasse , wo finden Sie commands Eigenschaft.

So können Sie Ihren Befehl wie folgt in das $ -Befehlsarray einfügen:

protected $commands = [ Commands\[commandName]::class ];

https://riptutorial.com/de/home 119

Page 136: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

und dann kann ich meinen Befehl über die Konsole verwenden.

so als Beispiel habe ich meinen Befehl wie benannt

protected $signature = 'test:command';

Also wann immer ich rennen werde

php artisan test:command

Es wird die handle Methode innerhalb der Klasse mit dem Signatur- test:command aufgerufen.

Handwerker online lesen: https://riptutorial.com/de/laravel/topic/1140/handwerker

https://riptutorial.com/de/home 120

Page 137: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 35: Häufige Probleme und schnelle Korrekturen

Einführung

In diesem Abschnitt werden die häufigsten Probleme und schnellen Lösungen für Entwickler (insbesondere Anfänger) aufgeführt.

Examples

TokenMisMatch-Ausnahme

Diese Ausnahme erhalten Sie meist bei Formulareinreichungen. Laravel schützt die Anwendung vor CSRF validiert jede Anforderung und stellt sicher, dass die Anforderung aus der Anwendung stammt. Diese Überprüfung wird mit einem token . Wenn dieses Token nicht übereinstimmt, wird diese Ausnahme generiert.

Schnelle Lösung

Fügen Sie dies in Ihrem Formularelement hinzu. Dies sendet csrf_token zusammen mit anderen Formulardaten, sodass Laravel weiß, dass Ihre Anfrage gültig ist

<input type="hidden" name="_token" value="{{ csrf_token() }}">

Häufige Probleme und schnelle Korrekturen online lesen: https://riptutorial.com/de/laravel/topic/9971/haufige-probleme-und-schnelle-korrekturen

https://riptutorial.com/de/home 121

Page 138: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 36: Helfer

Einführung

Laravel-Helfer sind die global zugänglichen Funktionen, die vom Framework definiert werden. Sie kann direkt an beliebiger Stelle in der Anwendung aufgerufen und unabhängig verwendet werden, ohne dass ein Objekt instanziiert oder eine Klasse importiert werden muss.

Es gibt Helfer zur Bearbeitung von Arrays , Pfaden , Strings , URLs usw

Examples

Array-Methoden

array_add ()

Mit dieser Methode werden einem Array neue Schlüsselwertpaare hinzugefügt.

$array = ['username' => 'testuser']; $array = array_add($array, 'age', 18);

Ergebnis

['username' => 'testuser', 'age' => 18]

String-Methoden

camel_case ()

Diese Methode ändert einen String in einen Kamelfall

camel_case('hello_world');

Ergebnis

HelloWorld

Pfad mehods

Pfadmethoden erleichtern den einfachen Zugriff auf anwendungsbezogene Pfade von überall.

public_path ()

Diese Methode gibt den vollständig qualifizierten öffentlichen Pfad der Anwendung zurück.

https://riptutorial.com/de/home 122

Page 139: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Welches ist das öffentliche Verzeichnis.

$path = public_path();

URLs

URL ()

Die URL-Funktion generiert eine vollständig qualifizierte URL für den angegebenen Pfad.

Wenn Ihre Website hello.com

echo url('my/dashboard');

würden zurückkehren

hello.com/my/dashboard

Wenn nichts an die URL-Methode übergeben wird, wird eine Instanz von Illuminate\Routing\UrlGenerator , die so verwendet werden könnte

würde aktuelle URL zurückgeben

echo url()->current();

würde volle URL zurückgeben

echo url()->full();

würde die vorherige URL zurückgeben

echo url()->previous();

Helfer online lesen: https://riptutorial.com/de/laravel/topic/8827/helfer

https://riptutorial.com/de/home 123

Page 140: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 37: HTML und Form Builder

Examples

Installation

HTML und Form Builder ist seit Laravel 5 keine Kernkomponente, daher müssen wir sie separat installieren:

composer require laravelcollective/html "~5.0"

Schließlich config/app.php wir in config/app.php den Dienstanbieter und die Fassaden-Aliase wie config/app.php registrieren:

'providers' => [ // ... Collective\Html\HtmlServiceProvider::class, // ... ], 'aliases' => [ // ... 'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class, // ... ],

Vollständige Dokumente sind für Formulare und HTML verfügbar

HTML und Form Builder online lesen: https://riptutorial.com/de/laravel/topic/3672/html-und-form-builder

https://riptutorial.com/de/home 124

Page 141: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 38: Installation

Examples

Installation

Laravel-Anwendungen werden mit Composer installiert und verwaltet, einem beliebten PHP-Abhängigkeitsmanager. Es gibt zwei Möglichkeiten, eine neue Laravel-Anwendung zu erstellen.

Über den Komponisten

$ composer create-project laravel/laravel [foldername]

Oder

$ composer create-project --prefer-dist laravel/laravel [foldername]

Ersetzen Sie [Ordnername] durch den Namen des Verzeichnisses, in dem Ihre neue Laravel-Anwendung installiert werden soll. Sie darf vor der Installation nicht existieren. Möglicherweise müssen Sie auch die ausführbare Composer-Datei zu Ihrem Systempfad hinzufügen.

Wenn Sie ein Laravel-Projekt mit einer bestimmten Version des Frameworks erstellen möchten, können Sie ein Versionsmuster angeben. Andernfalls verwendet Ihr Projekt die neueste verfügbare Version.

Wenn Sie beispielsweise ein Projekt in Laravel 5.2 erstellen möchten, würden Sie Folgendes ausführen:

$ composer create-project --prefer-dist laravel/laravel 5.2.*

Warum --prefer-dist

Es gibt zwei Möglichkeiten, ein Paket herunterzuladen: source und dist . Bei stabilen Versionen verwendet Composer standardmäßig den dist . Die source ist ein Versionskontroll-Repository. Wenn --prefer-source aktiviert ist, wird Composer von der Quelle installiert, falls vorhanden.

--prefer-dist ist das Gegenteil von --prefer-source und weist Composer an, falls möglich von dist zu installieren. Dies kann die Installation auf Build-Servern und in anderen Anwendungsfällen, in denen Sie normalerweise keine Herstelleraktualisierungen durchführen, erheblich beschleunigen. Außerdem können Sie Probleme mit Git vermeiden, wenn Sie nicht ordnungsgemäß eingerichtet sind.

Über den Laravel Installer

https://riptutorial.com/de/home 125

Page 142: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Laravel bietet ein hilfreiches Befehlszeilenprogramm zum schnellen Erstellen von Laravel-Anwendungen. Installieren Sie zuerst das Installationsprogramm:

$ composer global require laravel/installer

Sie müssen sicherstellen, dass sich der Composer-Binariesordner in Ihrer $ PATH-Variablen befindet, um das Laravel-Installationsprogramm auszuführen.

Prüfen Sie zunächst, ob es sich bereits in Ihrer $ PATH-Variablen befindet

echo $PATH

Wenn alles korrekt ist, sollte die Ausgabe etwa Folgendes enthalten:

Users/yourusername/.composer/vendor/bin

Wenn nicht, bearbeiten Sie Ihre .bashrc oder, wenn Sie ZSH verwenden, Ihre .zshrc so, dass sie den Pfad zu Ihrem Composer-Herstellerverzeichnis enthält.

Nach der Installation erstellt dieser Befehl eine neue Laravel-Installation in dem von Ihnen angegebenen Verzeichnis.

laravel new [foldername]

Sie können auch verwenden . (ein Punkt) anstelle von [Ordnername] , um das Projekt im aktuellen Arbeitsverzeichnis zu erstellen, ohne ein Unterverzeichnis zu erstellen.

Anwendung ausführen

Laravel wird mit einem PHP-basierten Webserver geliefert, der durch Ausführen gestartet werden kann

$ php artisan serve

Der HTTP-Server verwendet standardmäßig Port 8000. Wenn der Port jedoch bereits verwendet wird oder Sie mehrere Laravel-Anwendungen gleichzeitig ausführen möchten, können Sie mit dem Flag --port einen anderen Port angeben:

$ php artisan serve --port=8080

Der HTTP-Server verwendet localhost als Standarddomäne zum Ausführen der Anwendung. Sie können jedoch das Flag --host verwenden, um eine andere Adresse anzugeben:

$ php artisan serve --host=192.168.0.100 --port=8080

Verwendung eines anderen Servers

Wenn Sie lieber eine andere Webserver-Software verwenden, werden einige

https://riptutorial.com/de/home 126

Page 143: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Konfigurationsdateien im public Verzeichnis Ihres Projekts bereitgestellt. .htaccess für Apache und web.config für ASP.NET. Für andere Software wie NGINX können Sie die Apache-Konfigurationen mithilfe verschiedener Online-Tools konvertieren.

Das Framework erfordert, dass der Webserver-Benutzer über Schreibberechtigungen für die folgenden Verzeichnisse verfügt:

/storage•/bootstrap/cache•

Auf * nix Betriebssystemen kann dies durch erreicht werden

chown -R www-data:www-data storage bootstrap/cache chmod -R ug+rwx storage bootstrap/cache

(wobei www-data der Name und die Gruppe des Webserver-Benutzers ist)

Der Webserver Ihrer Wahl sollte so konfiguriert sein, dass er Inhalte aus dem Verzeichnis /public Ihres Projekts bereitstellt. Dies geschieht normalerweise, indem Sie ihn als Dokumentstamm festlegen. Der Rest Ihres Projekts sollte nicht über Ihren Webserver zugänglich sein.

Wenn Sie alles richtig eingerichtet haben, sollte beim Navigieren zur URL Ihrer Website die Standard-Landing Page von Laravel angezeigt werden.

Bedarf

Das Laravel-Framework hat folgende Anforderungen:

5.3

PHP> = 5.6.4•XML PHP Extension•PDO PHP-Erweiterung•OpenSSL PHP Extension•Mbstring PHP Extension•Tokenizer PHP-Erweiterung•

5.1 (LTS) 5.2

PHP> = 5.5.9•PDO PHP-Erweiterung•Laravel 5.1 ist die erste Version von Laravel, die PHP 7.0 unterstützt.•

5,0

PHP> = 5,4, PHP <7•OpenSSL PHP Extension•Tokenizer PHP-Erweiterung•

https://riptutorial.com/de/home 127

Page 144: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Mbstring PHP Extension•JSON-PHP-Erweiterung (nur bei PHP 5.5)•

4.2

PHP> = 5,4•Mbstring PHP Extension•JSON-PHP-Erweiterung (nur bei PHP 5.5)•

Hello World-Beispiel (Verwenden von Controller und View)

Erstellen Sie eine Laravel-Anwendung:

$ composer create-project laravel/laravel hello-world

1.

Navigieren Sie zum Projektordner, z

$ cd C:\xampp\htdocs\hello-world

2.

Einen Controller erstellen:

$ php artisan make:controller HelloController --resource

3.

Dadurch wird die Datei app / Http / Controllers / HelloController.php erstellt . Die Option --resource generiert CRUD-Methoden für den Controller, z. B. indexieren, erstellen, --resource , aktualisieren.

Registrieren Sie eine Route zu Hello des index - Methode. Fügen Sie diese Zeile zu app / Http / routes.php (Version 5.0 bis 5.2) oder routes / web.php (Version 5.3) hinzu :

4.

Route::get('hello', 'HelloController@index');

Um Ihre neu hinzugefügten Routen $ php artisan route:list , können Sie die $ php artisan route:list ausführen

Erstellen Sie eine Blade-Vorlage im views :

Quellen / Ansichten / hello.blade.php:

<h1>Hello world!</h1>

5.

Jetzt weisen wir die Indexmethode an, die Vorlage hello.blade.php anzuzeigen:

app / Http / Controller / HelloController.php

6.

<?php namespace App\Http\Controllers;

https://riptutorial.com/de/home 128

Page 145: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

use Illuminate\Http\Request; use App\Http\Requests; class HelloController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { return view('hello'); } // ... other resources are listed below the index one above

Sie können Ihre App mit dem folgenden PHP Artisan Command php artisan serve : php artisan serve ; Es zeigt Ihnen die Adresse, unter der Sie auf Ihre Anwendung zugreifen können (normalerweise unter http: // localhost: 8000 ) .

Alternativ können Sie direkt zu der entsprechenden Stelle in Ihrem Browser wechseln. Falls Sie einen Server wie XAMPP verwenden (entweder: http: // localhost / hallo-world / public / hallo, falls Sie Ihre Laravel-Instanz, hello-world , direkt in Ihrem Verzeichnis xampp / htdocs installiert haben, wie in: Nachdem Sie das ausgeführt haben Schritt 1 dieses Hello Words von Ihrer Befehlszeilenschnittstelle aus ( Verzeichnis xampp / htdocs ) .

Hallo Weltbeispiel (Basic)

Routendatei öffnen Fügen Sie den folgenden Code ein:

Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });

Nachdem Sie localhost/helloworld haben, wird Hello World localhost/helloworld .

Die Routendatei befindet sich:

5.3

Für das Web

routes/web.php

Für APIs

routes/api.php

5,2 5,1 (LTS) 5,0

https://riptutorial.com/de/home 129

Page 146: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

app/Http/routes.php

4.2

app/routes.php

Installation mit LaraDock (Laravel Homestead für Docker)

LaraDock ist eine Laravel Homestead-ähnliche Entwicklungsumgebung, jedoch für Docker anstelle von Vagrant. https://github.com/LaraDock/laradock

Installation

* Benötigt Git und Docker

Klonen Sie das LaraDock-Repository:

A. Wenn Sie bereits ein Laravel-Projekt haben, klonen Sie dieses Repository in Ihrem Laravel-Stammverzeichnis.

git submodule add https://github.com/LaraDock/laradock.git

B. Wenn Sie kein Laravel-Projekt haben und Laravel von Docker installieren möchten, klonen Sie dieses Repo an einer beliebigen Stelle auf Ihrem Computer:

git clone https://github.com/LaraDock/laradock.git

Grundlegende Verwendung

Ausführen von Containern: (Stellen Sie sicher, dass Sie sich im Laradock-Ordner befinden, bevor Sie die Befehle zum Erstellen des Docker-Befehls ausführen.)

Beispiel: NGINX und MySQL docker-compose up -d nginx mysql : docker-compose up -d nginx mysql

Es gibt eine Liste der verfügbaren Container, die Sie auswählen können, um Ihre eigenen Kombinationen zu erstellen.

nginx , hhvm , php-fpm , mysql , redis , postgres , mariadb , neo4j , mongo , apache2 , caddy , memcached , beanstalkd , beanstalkd-console , workspace

1.

Geben Sie den Workspace-Container ein, um Befehle wie (Artisan, Composer, PHPUnit, Gulp, ...) auszuführen.

docker-compose exec workspace bash

2.

Wenn Sie noch kein Laravel-Projekt installiert haben, führen Sie die Schritte aus, um Laravel 3.

https://riptutorial.com/de/home 130

Page 147: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

aus einem Docker-Container zu installieren.

ein. Geben Sie den Workspace-Container ein.

b. Installieren Sie Laravel. composer create-project laravel/laravel my-cool-app "5.3.*"

Bearbeiten Sie die Laravel-Konfigurationen. Öffnen Sie die .env-Datei Ihrer Laravel und setzen Sie DB_HOST auf Ihren mysql:

DB_HOST=mysql

4.

Öffnen Sie Ihren Browser und besuchen Sie Ihre localhost-Adresse.5.

Installation online lesen: https://riptutorial.com/de/laravel/topic/7961/installation

https://riptutorial.com/de/home 131

Page 148: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 39: Installationsanleitung

Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was Laravel-5.4 ist und warum ein Entwickler es verwenden möchte.

Es sollte auch alle großen Themen in Laravel-5.4 erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für laravel-5.4 neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Examples

Installation

Detaillierte Anweisungen zum Einrichten oder Installieren von Laravel.

composer ist für die einfache Installation von laravel erforderlich.

Es gibt drei Methoden, um Laravel in Ihrem System zu installieren:

Über den Laravel Installer

Laden Sie das Laravel-Installationsprogramm mit composer herunter

composer global require "laravel/installer"

Bevor Sie composer verwenden, müssen Sie ~/.composer/vendor/bin zu PATH hinzufügen. Nachdem die Installation abgeschlossen ist, können laravel new Befehl laravel new ein neues Projekt in Laravel erstellen.

Beispiel:

laravel new {folder name}

Dieser Befehl erstellt ein neues Verzeichnis mit dem Namen site und eine neue Laravel Installation mit allen anderen Abhängigkeiten wird im Verzeichnis installiert.

1.

Über Composer Create-Project

Sie können den Befehl im terminal , um eine neue Laravel app zu erstellen:

composer create-project laravel/laravel {folder name}

2.

Über Download3.

https://riptutorial.com/de/home 132

Page 149: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Lade Laravel herunter und entpacke es.

composer install1. Kopieren .env.example .env per teminal oder manuell nach .env .

cp .env.example .env

2.

Öffnen Sie die .env Datei und stellen Sie Ihre Datenbank, E-Mail, Schieber usw. ein (falls erforderlich).

3.

php artisan migrate (wenn Datenbank eingerichtet ist)4. php artisan key:generate5. php artisan serve6. Gehen Sie zu localhost: 8000 , um die Site anzuzeigen7.

Laravel docs

Hallo Weltbeispiel (Basic)

Der Zugriff auf Seiten und die Ausgabe von Daten ist in Laravel relativ einfach. Alle app/routes.php befinden sich in app/routes.php . Es gibt normalerweise einige Beispiele, um den Einstieg zu erleichtern, aber wir erstellen eine neue Route. Öffnen Sie Ihre app/routes.php und fügen Sie den folgenden Code ein:

Route::get('helloworld', function () { return '<h1>Hello World</h1>'; });

Dies teilt Laravel mit, dass beim http://localhost/helloworld in einem Browser die Funktion ausgeführt und die angegebene Zeichenfolge zurückgegeben werden muss.

Hallo Weltbeispiel mit Ansichten und Controller

Angenommen, wir haben eine funktionierende Laravel-Anwendung, die beispielsweise in "mylaravel.com" ausgeführt wird, wir möchten, dass unsere Anwendung eine "Hello World" -Meldung anzeigt, wenn wir auf die URL http://mylaravel.com/helloworld . Dabei werden zwei Dateien (die Ansicht und der Controller) erstellt und eine vorhandene Datei, der Router, geändert.

Die Aussicht

Zunächst öffnen wir eine neue Blade-View-Datei namens helloview.blade.php mit der Zeichenfolge "Hello World". Erstellen Sie es im Verzeichnis app / resources / views

<h1>Hello, World</h1>

Der Controller

Jetzt erstellen wir einen Controller, der die Anzeige dieser Ansicht mit der Zeichenfolge "Hello World" verwaltet. Wir verwenden Handwerker in der Kommandozeile.

https://riptutorial.com/de/home 133

Page 150: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$> cd your_laravel_project_root_directory $> php artisan make:controller HelloController

app/Http/Controllers/HelloController.php wird einfach eine Datei ( app/Http/Controllers/HelloController.php ) erstellt, die die Klasse enthält, die unser neuer Controller HelloController .

Bearbeiten Sie diese neue Datei und schreibt eine neue Methode hello , dass die Ansicht angezeigt werden wir vorher erstellt.

public function hello() { return view('helloview'); }

Dieses 'helloview'-Argument in der View-Funktion ist nur der Name der View-Datei ohne das abschließende ".blade.php". Laravel wird es finden.

Nun , wenn wir rufen Sie die Methode hello des Controllers HelloController es wird die Nachricht angezeigt werden soll . Aber wie verknüpfen wir das mit einem Aufruf an http://mylaravel.com/helloworld ? Mit dem letzten Schritt das Routing.

Der Router

Öffnen Sie die vorhandene Datei app/routes/web.php (in älteren Laravel-Versionen app/Http/routes.php ) und fügen Sie diese Zeile hinzu:

Route::get('/helloworld', 'HelloController@hello');

Dies ist ein sehr selbsterklärender Befehl, der unserer Laravel-App sagt: "Wenn jemand das Verb" GET "verwendet, um auf" / helloworld "in dieser Laravel-App zuzugreifen, geben Sie die Ergebnisse des Aufrufs der Funktion hello im HelloController Controller zurück.

Installationsanleitung online lesen: https://riptutorial.com/de/laravel/topic/2187/installationsanleitung

https://riptutorial.com/de/home 134

Page 151: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 40: Kammerdiener

Einführung

Valet ist eine auf macOS zugeschnittene Entwicklungsumgebung. Es entfernt den Bedarf an virtuellen Maschinen, Homestead oder Vagrant. Sie müssen Ihre Datei /etc/hosts nicht mehr ständig aktualisieren. Sie können Ihre Websites sogar öffentlich mit lokalen Tunneln freigeben.

Laravel Valet macht alle Sites in einer *.dev Domäne verfügbar, indem die *.dev Domänennamen gebunden werden.

Syntax

valet-Befehl [Optionen] [Argumente]•

Parameter

Parameter Werte gesetzt

BefehlDomain , fetch-share-url, vergessen, Hilfe, Installation, Verknüpfung , Links , Liste, Protokolle, aktuelle Version, Öffnen, Parken , Pfade, Neustart, Sichern, Starten, Beenden, Deinstallieren, Aufheben der Verknüpfung

Optionen-h, --help, -q, --quiet, -V, --version, --ansi, --no-ansi, -n, --no-Interaktion, -v, -vv, -vvv, - -verbose

Argumente (wahlweise)

Bemerkungen

Da Valet für Linux und Windows nicht inoffiziell ist, gibt es keine Unterstützung außerhalb der jeweiligen Github-Repositorys.

Examples

Valet-Link

Dieser Befehl ist nützlich, wenn Sie eine einzelne Site in einem Verzeichnis und nicht im gesamten Verzeichnis bereitstellen möchten.

cd ~/Projects/my-blog/ valet link awesome-blog

https://riptutorial.com/de/home 135

Page 152: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Valet erstellt in ~/.valet/Sites einen symbolischen Link, der auf Ihr aktuelles Arbeitsverzeichnis verweist. Nach dem Ausführen des Befehls link können Sie auf die Website in Ihrem Browser unter http://awesome-blog.dev zugreifen.

Führen Sie den Befehl valet links aus, um eine Liste aller verknüpften Verzeichnisse anzuzeigen . Sie können valet unlink awesome-blog , um den symbolischen Link zu löschen.

Parkservice

cd ~/Projects valet park

Dieser Befehl registriert Ihr aktuelles Arbeitsverzeichnis als Pfad, den Valet nach Sites suchen soll. Jetzt wird jedes Laravel-Projekt, das Sie in Ihrem "geparkten" Verzeichnis erstellen, automatisch mit der http://folder-name.dev //folder-name.dev-Konvention bedient.

Valet-Links

Dieser Befehl zeigt alle registrierten Valet-Links und die entsprechenden Dateipfade auf Ihrem Computer an.

Befehl:

valet links

Beispielausgabe:

... site1 -> /path/to/site/one site2 -> /path/to/site/two ...

Hinweis 1: Sie können diesen Befehl von überall aus ausführen, nicht nur in einem verknüpften Ordner.

Hinweis 2: Sites werden ohne die Endung .dev aufgelistet. Sie können jedoch mit site1.dev über den Browser auf Ihre Anwendung zugreifen.

Installation

WICHTIG!! Valet ist ein Tool, das nur für macOS entwickelt wurde.

Voraussetzungen

Valet verwendet den HTTP-Port Ihres lokalen Computers (Port 80). Daher können Sie es nicht verwenden, wenn Apache oder Nginx auf demselben Computer installiert sind und ausgeführt werden.

https://riptutorial.com/de/home 136

Page 153: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Der inoffizielle Paketmanager Homebrew von macOS ist erforderlich, um Valet ordnungsgemäß zu verwenden.

Stellen Sie sicher, dass Homebrew auf die neueste Version aktualisiert wird, indem Sie das brew update im Terminal ausführen.

Installation

Installieren Sie PHP 7.1 mithilfe von Homebrew über brew install homebrew/php/php71 Install brew install homebrew/php/php71 .

Installieren Sie Valet with Composer über composer global require laravel/valet .•~/.composer/vendor/bin Verzeichnis ~/.composer/vendor/bin an den "PATH" Ihres Systems an, falls es noch nicht vorhanden ist.

Führen Sie den Befehl zum valet install Daten aus.•

Nach der Installation Während des Installationsvorgangs hat Valet DnsMasq installiert. Es hat auch registriert, dass der Valet-Daemon automatisch gestartet wird, wenn Ihr System startet. Sie müssen also nicht bei jedem Neustart des Systems den valet start oder die valet install ausführen.

Valet Domain

Mit diesem Befehl können Sie die TLD (Top-Level-Domain) ändern oder anzeigen, die zum Binden von Domänen an Ihren lokalen Computer verwendet wird.

Holen Sie sich die aktuelle TLD

$ valet domain > dev

Legen Sie die TLD fest

$ valet domain local > Your Valet domain has been updated to [local].

Installation (Linux)

WICHTIG!! Valet ist ein für macOS entwickeltes Tool, die unten angegebene Version ist für Linux OS portiert.

Voraussetzungen

Nicht Park als installieren root oder durch die Verwendung von sudo - Befehl.•Valet verwendet den HTTP-Port Ihres lokalen Computers (Port 80). Daher können Sie es nicht verwenden, wenn Apache oder Nginx auf demselben Computer installiert sind und ausgeführt werden.

Zum Installieren und Ausführen von Valet ist eine aktuelle Version von composer erforderlich.•

Installation

https://riptutorial.com/de/home 137

Page 154: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Run composer global require cpriego/valet-linux Valet global installiert wird, composer global require cpriego/valet-linux installiert ist.

Führen Sie den Befehl valet install , um die Installation abzuschließen.•

Nach der Installation

Während des Installationsvorgangs hat Valet DnsMasq installiert. Es hat auch registriert, dass der Valet-Daemon automatisch gestartet wird, wenn Ihr System startet. Sie müssen also nicht bei jedem Neustart des Systems den valet start oder die valet install ausführen.

Die offizielle Dokumentation finden Sie hier .

Kammerdiener online lesen: https://riptutorial.com/de/laravel/topic/1906/kammerdiener

https://riptutorial.com/de/home 138

Page 155: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 41: Kassierer

Bemerkungen

Laravel Cashier kann für die Abonnementabrechnung verwendet werden, indem eine Schnittstelle zu den Abonnementdiensten von Braintree und Stripe bereitgestellt wird. Neben dem grundlegenden Abonnement-Management können Sie damit Gutscheine abwickeln, Abonnements, Mengen austauschen, Widerrufsfristen und PDF-Rechnungserstellung erstellen.

Examples

Streifen-Setup

Ersteinrichtung

Um Stripe für die Abwicklung von Zahlungen verwenden zu können, müssen Sie Folgendes zum composer.json hinzufügen und dann das composer update ausführen:

"laravel/cashier": "~6.0"

Die folgende Zeile muss dann zu config/app.php , dem Dienstanbieter, hinzugefügt werden:

Laravel\Cashier\CashierServiceProvider

Datenbank-Setup

Um Kassierer verwenden zu können, müssen wir die Datenbanken konfigurieren. Wenn noch keine Benutzertabelle vorhanden ist, müssen Sie eine erstellen. Außerdem müssen Sie eine Abonnementtabelle erstellen. Im folgenden Beispiel wird eine vorhandene users geändert. Weitere Informationen zu Modellen finden Sie unter Eloquent Models .

Um den Kassierer zu verwenden, erstellen Sie eine neue Migration und fügen Sie Folgendes hinzu, um die oben genannten Punkte zu erreichen:

// Adjust users table Schema::table('users', function ($table) { $table->string('stripe_id')->nullable(); $table->string('card_brand')->nullable(); $table->string('card_last_four')->nullable(); $table->timestamp('trial_ends_at')->nullable(); }); //Create subscriptions table Schema::create('subscriptions', function ($table) { $table->increments('id');

https://riptutorial.com/de/home 139

Page 156: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$table->integer('user_id'); $table->string('name'); $table->string('stripe_id'); $table->string('stripe_plan'); $table->integer('quantity'); $table->timestamp('trial_ends_at')->nullable(); $table->timestamp('ends_at')->nullable(); $table->timestamps(); });

Wir müssen dann php artisan migrate ausführen, um unsere Datenbank zu aktualisieren.

Modell einrichten

Das abrechnungsfähige Merkmal muss dann dem in app/User.php gefundenen Benutzermodell app/User.php und in Folgendes geändert werden:

use Laravel\Cashier\Billable; class User extends Authenticatable { use Billable; }

Stripe Keys

Damit das Geld auf unserem eigenen Stripe-Konto endet, müssen Sie es in der Datei config/services.php einrichten, indem Sie die folgende Zeile hinzufügen:

'stripe' => [ 'model' => App\User::class, 'secret' => env('STRIPE_SECRET'), ],

Ersetzen des STRIPE_SECRET durch Ihren eigenen geheimen Stripe-Schlüssel.

Nach Abschluss dieses Vorgangs ist Cashier and Strip so eingerichtet, dass Sie mit der Einrichtung von Abonnements fortfahren können.

Kassierer online lesen: https://riptutorial.com/de/laravel/topic/7474/kassierer

https://riptutorial.com/de/home 140

Page 157: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 42: Konstanten

Examples

Beispiel

Zuerst müssen Sie eine Datei constants.php erstellen. Es empfiehlt sich, diese Datei im Ordner app / config / zu erstellen. Sie können die Datei constants.php auch in der Datei compose.json hinzufügen.

Beispieldatei:

app / config / constants.php

Array-basierte Konstanten in der Datei:

return [ 'CONSTANT' => 'This is my first constant.' ];

Und diese Konstante erhalten Sie, wenn Sie die Fassade Config :

use Illuminate\Support\Facades\Config;

Dann erhalten Sie den Wert mit dem konstanten Namen CONSTANT wie CONSTANT :

echo Config::get('constants.CONSTANT');

Und das Ergebnis wäre der Wert:

Dies ist meine erste Konstante.

Konstanten online lesen: https://riptutorial.com/de/laravel/topic/9192/konstanten

https://riptutorial.com/de/home 141

Page 158: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 43: Laravel Docker

Einführung

Eine Herausforderung, der sich jedes Entwickler- und Entwicklungsteam stellt, ist die Konsistenz der Umgebung. Laravel ist heute eines der beliebtesten PHP-Frameworks. DDocker ist dagegen eine Virtualisierungsmethode, die Probleme mit der Arbeit auf meinem Computer beseitigt, wenn Code mit anderen Entwicklern zusammenarbeitet. Die beiden zusammen schaffen eine Verschmelzung von Nützlichem und Kraftvollem . Obwohl beide sehr unterschiedliche Dinge tun, können beide zu erstaunlichen Produkten kombiniert werden.

Examples

Laradock verwenden

Laradock ist ein Projekt, das ein Ready-to-Go- Paket enthält, das auf Laravel zugeschnitten ist.

Laden Sie Laradock im Stammordner Ihres Projekts herunter oder klonen Sie es:

git clone https://github.com/Laradock/laradock.git

Ändern Sie das Verzeichnis in Laradock und generieren Sie die .env Datei, die zum Ausführen Ihrer Konfigurationen erforderlich ist:

cd laradock cp .env-example .env

Sie können jetzt Docker ausführen. Wenn Sie den Container zum ersten Mal ausführen, werden alle erforderlichen Pakete aus dem Internet heruntergeladen.

docker-compose up -d nginx mysql redis beanstalkd

Jetzt können Sie Ihren Browser öffnen und Ihr Projekt unter http://localhost anzeigen.

Für die vollständige Laradock-Dokumentation und -Konfiguration klicken Sie hier .

Laravel Docker online lesen: https://riptutorial.com/de/laravel/topic/10034/laravel-docker

https://riptutorial.com/de/home 142

Page 159: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 44: Laravel-Pakete

Examples

Laravel-Ide-Helfer

Dieses Paket generiert eine Datei, die von Ihrer IDE verstanden wird, sodass eine genaue automatische Vervollständigung möglich ist. Die Generierung erfolgt basierend auf den Dateien in Ihrem Projekt.

Lesen Sie mehr dazu hier

Laravel-Datentabellen

Dieses Paket wurde erstellt, um serverseitige Arbeiten von DataTables jQuery Plugin über die AJAX-Option mithilfe von Eloquent ORM, Fluent Query Builder oder Collection auszuführen.

Lesen Sie hier oder hier mehr darüber

Interventions-Bild

Intervention Image ist eine Open Source-Bibliothek zur Bearbeitung und Bearbeitung von PHP-Bildern. Es bietet eine einfachere und ausdrucksstärkere Methode zum Erstellen, Bearbeiten und Zusammenstellen von Bildern und unterstützt derzeit die beiden gängigsten Bildverarbeitungsbibliotheken GD Library und Imagick.

Lesen Sie mehr dazu hier

Laravel-Generator

Bereiten Sie Ihre APIs und Ihr Admin-Panel in wenigen Minuten vor

Lesen Sie mehr dazu hier

Laravel Socialite

Laravel Socialite bietet eine ausdrucksstarke, fließende Schnittstelle zur OAuth-Authentifizierung mit Facebook, Twitter, Google, LinkedIn, GitHub und Bitbucket. Es behandelt fast den gesamten sozialen Authentifizierungscode, den Sie vor dem Schreiben fürchten.

Lesen Sie mehr dazu hier

Offizielle Pakete

Kassierer

https://riptutorial.com/de/home 143

Page 160: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Laravel Cashier bietet eine ausdrucksstarke, fließende Schnittstelle zu den Abonnement-Abrechnungsdiensten von Stripe und Braintree . Es behandelt fast den gesamten Boilerplate-Abonnement-Rechnungscode, den Sie vor dem Schreiben fürchten. Neben der grundlegenden Abonnementverwaltung kann Cashier Coupons abwickeln, Abonnements tauschen, "Mengen" des Abonnements tauschen, Kulanzzeiten aufheben und sogar PDF-PDFs für die Rechnungslegung erstellen.

Mehr zu diesem Paket finden Sie hier .

Gesandte

Laravel Envoy bietet eine saubere, minimale Syntax zum Definieren allgemeiner Aufgaben, die Sie auf Ihren Remote-Servern ausführen. Mit der Blade-Stil-Syntax können Sie problemlos Aufgaben für die Bereitstellung, Artisan-Befehle und vieles mehr einrichten. Derzeit unterstützt Envoy nur die Betriebssysteme Mac und Linux.

Dieses Paket ist auf Github zu finden.

Reisepass

Laravel macht es bereits leicht, die Authentifizierung über herkömmliche Anmeldeformulare durchzuführen, aber wie sieht es mit APIs aus? APIs verwenden normalerweise Token, um Benutzer zu authentifizieren, und behalten den Sitzungsstatus zwischen Anforderungen nicht bei. Laravel macht die API-Authentifizierung durch die Verwendung von Laravel Passport zu einem Kinderspiel. Mit dieser Funktion können Sie in wenigen Minuten eine vollständige OAuth2-Serverimplementierung für Ihre Laravel-Anwendung durchführen.

Mehr zu diesem Paket finden Sie hier .

Erkunden

Laravel Scout bietet eine einfache, treiberbasierte Lösung zum Hinzufügen von Volltextsuchen zu Ihren Eloquent-Modellen. Mit Modellbeobachtern hält Scout Ihre Suchindizes automatisch mit Ihren Eloquent-Datensätzen synchron.

Derzeit wird Scout mit einem Algolia-Fahrer ausgeliefert. Das Schreiben von benutzerdefinierten Treibern ist jedoch einfach und Sie können Scout mit Ihren eigenen Suchimplementierungen erweitern.

Mehr zu diesem Paket finden Sie hier .

Prominente

Laravel Socialite bietet eine ausdrucksstarke, fließende Schnittstelle zur OAuth-Authentifizierung mit Facebook, Twitter, Google, LinkedIn, GitHub und Bitbucket. Es behandelt fast den gesamten sozialen Authentifizierungscode, den Sie vor dem Schreiben fürchten.

https://riptutorial.com/de/home 144

Page 161: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Dieses Paket ist auf Github zu finden.

Laravel-Pakete online lesen: https://riptutorial.com/de/laravel/topic/8001/laravel-pakete

https://riptutorial.com/de/home 145

Page 162: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 45: Lumen-Rahmen

Examples

Erste Schritte mit Lumen

Das folgende Beispiel zeigt die Verwendung von Lumen in WAMP / MAMP / LAMP Umgebungen.

Um mit Lumen , müssen Sie zuerst einige Dinge einrichten.

Komponist•PHPUnit•git (nicht erforderlich, wird aber dringend empfohlen)•

Vorausgesetzt, Sie haben alle diese drei Komponenten installiert (zumindest benötigen Sie den Composer), gehen Sie zunächst über das Terminal zum Webserver-Dokumentstamm. MacOSX und Linux verfügen über ein hervorragendes Terminal. Sie können git bash (was eigentlich mingw32 oder mingw64 ) in Windows verwenden.

$ cd path/to/your/document/root

Dann müssen Sie compose verwenden, um ein Lumen Projekt zu installieren und zu erstellen. Führen Sie den folgenden Befehl aus.

$ composer create-project laravel/lumen=~5.2.0 --prefer-dist lumen-project $ cd lumen-project

lumen-app im obigen Code ist der Ordnername. Sie können es nach Belieben ändern. Nun müssen Sie Ihren virtuellen Host so einrichten, dass er auf den path/to/document/root/lumen-project/public . http://lumen-project.local , Sie haben http://lumen-project.local diesem Ordner zugeordnet. Wenn Sie nun zu dieser URL gehen, sollten Sie eine Nachricht wie die folgende sehen (abhängig von Ihrer installierten Lumen Version war dies in meinem Fall 5.4.4) -

Lumen (5.4.4) (Laravel Components 5.4.*)

Wenn Sie die Datei lumen-project/routers/web.php dort lumen-project/routers/web.php , sollten Sie Folgendes sehen:

$app->get('/', function () use($app) { return $app->version(); });

Herzliche Glückwünsche! Jetzt haben Sie eine funktionierende Lumen Installation. Nein, Sie können diese App erweitern, um Ihre benutzerdefinierten Endpunkte anzuhören.

Lumen-Rahmen online lesen: https://riptutorial.com/de/laravel/topic/9221/lumen-rahmen

https://riptutorial.com/de/home 146

Page 163: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 46: Mail

Examples

Grundlegendes Beispiel

Sie können Mail konfigurieren, indem Sie diese Zeilen in der .ENV- Datei der App zusammen mit den Anmeldedaten Ihres E-Mail-Providers hinzufügen oder ändern. Beispielsweise für die Verwendung mit gmail können Sie Folgendes verwenden:

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=yourPassword MAIL_ENCRYPTION=tls

Dann können Sie E-Mails mit der E-Mail senden, zum Beispiel:

$variable = 'Hello world!'; // A variable which can be use inside email blade template. Mail::send('your.blade.file', ['variable' => $variable], function ($message) { $message->from('[email protected]'); $message->sender('[email protected]'); $message->to([email protected]); $message->subject('Hello World'); });

Mail online lesen: https://riptutorial.com/de/laravel/topic/8014/mail

https://riptutorial.com/de/home 147

Page 164: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 47: Makros in einer eloquenten Beziehung

Einführung

Wir haben neue Funktionen für Eloquent Relationship in Laravel Version 5.4.8. Wir können eine einzelne Instanz einer hasMany-Beziehung (es ist nur ein Beispiel) abrufen, indem Sie sie an Ort und Stelle definieren

Examples

Wir können eine Instanz der hasMany-Beziehung abrufen

In unserer AppServiceProvider.php

public function boot() { HasMany::macro('toHasOne', function() { return new HasOne( $this->query, $this->parent, $this->foreignKey, $this->localKey ); }); }

Nehmen wir an, wir haben Shop Modal und bekommen die Liste der gekauften Produkte. Nehmen wir an, wir haben allPurchased Relationship für Shop Modal

public function allPurchased() { return $this->hasMany(Purchased::class); } public function lastPurchased() { return $this->allPurchased()->latest()->toHasOne(); }

Makros in einer eloquenten Beziehung online lesen: https://riptutorial.com/de/laravel/topic/8998/makros-in-einer-eloquenten-beziehung

https://riptutorial.com/de/home 148

Page 165: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 48: Mehrere DB-Verbindungen in Laravel

Examples

Erste Schritte

In der Datenbankkonfigurationsdatei können mehrere Datenbankverbindungen jeglichen Typs definiert werden (wahrscheinlich app/config/database.php ). Um beispielsweise Daten aus 2 MySQL-Datenbanken abzurufen, definieren Sie beide getrennt:

<?php return array( 'default' => 'mysql', 'connections' => array( # Our primary database connection 'mysql' => array( 'driver' => 'mysql', 'host' => 'host1', 'database' => 'database1', 'username' => 'user1', 'password' => 'pass1' 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), # Our secondary database connection 'mysql2' => array( 'driver' => 'mysql', 'host' => 'host2', 'database' => 'database2', 'username' => 'user2', 'password' => 'pass2' 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), ), );

Die Standardverbindung ist immer noch auf mysql . Das heißt, wenn nicht anders angegeben, verwendet die Anwendung die mysql Verbindung.

Schema Builder verwenden

Verwenden Sie im Schema-Builder die Schema-Fassade für jede Verbindung. Führen Sie die Methode connection() , um anzugeben, welche Verbindung verwendet werden soll:

https://riptutorial.com/de/home 149

Page 166: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Schema::connection('mysql2')->create('some_table', function($table) { $table->increments('id'): });

DB Query Builder verwenden

Definieren Sie ähnlich wie der Schema-Generator eine Verbindung im Abfrage-Generator:

$users = DB::connection('mysql2')->select(...);

Eloquent verwenden

Es gibt mehrere Möglichkeiten, zu definieren, welche Verbindung in den Eloquent-Modellen verwendet werden soll. Eine Möglichkeit besteht darin, die $ connection- Variable im Modell festzulegen:

<?php class SomeModel extends Eloquent { protected $connection = 'mysql2'; }

Die Verbindung kann auch zur Laufzeit über die Methode setConnection werden.

<?php class SomeController extends BaseController { public function someMethod() { $someModel = new SomeModel; $someModel->setConnection('mysql2'); $something = $someModel->find(1); return $something; } }

Aus der Laravel-Dokumentation

Auf jede einzelne Verbindung kann über die Verbindungsmethode an der DB Fassade zugegriffen werden, auch wenn mehrere Verbindungen definiert sind. Der an die connection name sollte einer der in der Konfigurationsdatei config/database.php aufgeführten connection entsprechen:

$users = DB::connection('foo')->select(...);

https://riptutorial.com/de/home 150

Page 167: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Auf das Raw kann auch zugegriffen werden, wobei die PDO-Instanz mit der Methode getPdo für eine Verbindungsinstanz zugrunde liegt:

$pdo = DB::connection()->getPdo();

https://laravel.com/docs/5.4/database#using-multiple-database-connections

Mehrere DB-Verbindungen in Laravel online lesen: https://riptutorial.com/de/laravel/topic/9605/mehrere-db-verbindungen-in-laravel

https://riptutorial.com/de/home 151

Page 168: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 49: Middleware

Einführung

Middleware sind Klassen, die einer oder mehreren Routen zugeordnet werden können und in der frühen oder letzten Phase des Anforderungszyklus Aktionen ausführen. Wir können sie als eine Reihe von Schichten betrachten, die eine HTTP-Anforderung durchlaufen muss, während sie ausgeführt wird

Bemerkungen

Eine Middleware "Before" wird vor dem Controller-Aktionscode ausgeführt. Eine Middleware wird ausgeführt, nachdem die Anforderung von der Anwendung verarbeitet wurde

Examples

Middleware definieren

Um eine neue Middleware zu definieren, müssen Sie die Middleware-Klasse erstellen:

class AuthenticationMiddleware { //this method will execute when the middleware will be triggered public function handle ( $request, Closure $next ) { if ( ! Auth::user() ) { return redirect('login'); } return $next($request); } }

Dann müssen wir die Middleware registrieren: Wenn die Middleware an alle Routen der Anwendung app/Http/Kernel.php soll, müssen wir sie der Middleware-Eigenschaft von app/Http/Kernel.php :

protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \App\Http\Middleware\AuthenticationMiddleware::class ];

Wenn Sie die Middleware nur einigen Routen $routeMiddleware möchten, können Sie sie zu $routeMiddleware

//register the middleware as a 'route middleware' giving it the name of 'custom_auth' protected $routeMiddleware = [

https://riptutorial.com/de/home 152

Page 169: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

'custom_auth' => \App\Http\Middleware\AuthenticationMiddleware::class ];

und binden Sie es dann wie folgt an die einzelnen Routen:

//bind the middleware to the admin_page route, so that it will be executed for that route Route::get('admin_page', 'AdminController@index')->middleware('custom_auth');

Vorher nach After Middleware

Ein Beispiel für "vor" Middleware wäre wie folgt:

<?php namespace App\Http\Middleware; use Closure; class BeforeMiddleware { public function handle($request, Closure $next) { // Perform action return $next($request); } }

Während "nach" Middleware so aussehen würde:

<?php namespace App\Http\Middleware; use Closure; class AfterMiddleware { public function handle($request, Closure $next) { $response = $next($request); // Perform action return $response; } }

Der Hauptunterschied besteht darin, wie der Parameter $request behandelt wird. Wenn vor $next($request) Aktionen ausgeführt werden, die vor dem Ausführen des Controller-Codes ausgeführt werden, während $next($request) zuerst aufgerufen wird, werden die Aktionen nach Ausführung des Controller-Codes ausgeführt.

Routen-Middleware

https://riptutorial.com/de/home 153

Page 170: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Jede als routeMiddleware in app/Http/Kernel.php registrierte Middleware kann einer Route zugewiesen werden.

Es gibt verschiedene Möglichkeiten, Middleware zuzuweisen, aber alle tun dasselbe.

Route::get('/admin', 'AdminController@index')->middleware('auth', 'admin'); Route::get('admin/profile', ['using' => 'AdminController@index', 'middleware' => 'auth']); Route::get('admin/profile', ['using' => 'AdminController@index', 'middleware' => ['auth', 'admin']);

In allen obigen Beispielen können Sie auch vollständig qualifizierte Klassennamen als Middleware übergeben, unabhängig davon, ob sie als Routen-Middleware registriert wurde.

use App\Http\Middleware\CheckAdmin; Route::get('/admin', 'AdminController@index')->middleware(CheckAdmin::class);

Middleware online lesen: https://riptutorial.com/de/laravel/topic/3419/middleware

https://riptutorial.com/de/home 154

Page 171: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 50: Nützliche Links

Einführung

In diesem Thema finden Sie nützliche Links, um Ihre Laravel-Fähigkeiten zu verbessern oder Ihr Wissen zu erweitern.

Examples

Laravel Ökosystem

Laravel Scout - Laravel Scout bietet eine einfache, treiberbasierte Lösung zum Hinzufügen von Volltextsuchen zu Ihren Eloquent-Modellen.

Laravel Passport - API-Authentifizierung ohne Kopfschmerzen. Passport ist ein OAuth2-Server, der in wenigen Minuten fertig ist.

Gehöft - Die offizielle Entwicklungsumgebung von Laravel. Mit Unterstützung von Vagrant bringt Homestead Ihr gesamtes Team mit den neuesten PHP, MySQL, Postgres, Redis und mehr auf die gleiche Seite.

Laravel Cashier - Mit den integrierten Stripe- und Braintree-Integrationen können Sie die Abonnementabrechnung problemlos durchführen. Coupons, das Austauschen von Abonnements, Stornierungen und sogar PDF-Rechnungen sind sofort einsatzbereit.

Forge - Bereitstellen und Bereitstellen unbegrenzter PHP-Anwendungen für DigitalOcean, Linode und AWS.

Envoyer - Keine Ausfallzeiten bei der PHP-Bereitstellung.•Valet - Eine Laravel-Entwicklungsumgebung für Mac-Minimalisten. Kein Landstreicher, kein Apache, keine Aufregung.

Spark - Leistungsstarkes SaaS-Anwendungsgerüst. Beenden Sie das Schreiben von Boilerplate und konzentrieren Sie sich auf Ihre Anwendung.

Lumen - Wenn Sie nur eine API und blitzschnelle Geschwindigkeit benötigen, probieren Sie Lumen. Es ist Laravel super leicht.

Statamic - Ein echtes CMS, mit dem Agenturen profitabel gemacht werden können, die Entwickler zufrieden sind und Kunden umarmt werden.

Bildung

Laracasts - Lernen Sie praktische, moderne Webentwicklung durch Experten-Screencasts.•Laravel News - Bleiben Sie mit Laravel News auf dem Laufenden.•Laravel.io - Forum mit Open-Source-Code.•

Podcasts

Laravel-Nachrichten-Podcasts•Die Laravel-Podcasts•

https://riptutorial.com/de/home 155

Page 172: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Nützliche Links online lesen: https://riptutorial.com/de/laravel/topic/9957/nutzliche-links

https://riptutorial.com/de/home 156

Page 173: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 51: Prominente

Examples

Installation

composer require laravel/socialite

Bei dieser Installation wird davon ausgegangen, dass Sie Composer zum Verwalten Ihrer Abhängigkeiten mit Laravel verwenden. Dies ist eine großartige Möglichkeit, damit umzugehen.

Aufbau

In Ihrer config\services.php können Sie den folgenden Code hinzufügen

'facebook' => [ 'client_id' => 'your-facebook-app-id', 'client_secret' => 'your-facebook-app-secret', 'redirect' => 'http://your-callback-url', ],

Sie müssen den Provider auch zu Ihrer config\app.php

Suchen Sie nach 'providers' => [] und fügen Sie am Ende Folgendes hinzu:

'providers' => [ ... Laravel\Socialite\SocialiteServiceProvider::class, ]

Eine Fassade ist ebenfalls im Paket enthalten. Wenn Sie davon Gebrauch machen möchten, stellen Sie sicher, dass das aliases Array (auch in Ihrer config\app.php ) den folgenden Code enthält

'aliases' => [ .... 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ]

Grundnutzung - Fassade

return Socialite::driver('facebook')->redirect();

Dadurch wird eine eingehende Anfrage an die entsprechende URL umgeleitet, um authentifiziert zu werden. Ein grundlegendes Beispiel wäre ein Controller

https://riptutorial.com/de/home 157

Page 174: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

<?php namespace App\Http\Controllers\Auth; use Socialite; class AuthenticationController extends Controller { /** * Redirects the User to the Facebook page to get authorization. * * @return Response */ public function facebook() { return Socialite::driver('facebook')->redirect(); } }

app\Http\routes.php sicher, dass Ihre app\Http\routes.php -Datei über eine Route verfügt, um hier eine eingehende Anfrage zuzulassen.

Route::get('facebook', 'App\Http\Controllers\Auth\AuthenticationController@facebook');

Grundnutzung - Abhängigkeitsinjektion

/** * LoginController constructor. * @param Socialite $socialite */ public function __construct(Socialite $socialite) { $this->socialite = $socialite; }

Im Konstruktor Ihres Controllers können Sie jetzt die Socialite Klasse Socialite , mit der Sie sich bei sozialen Netzwerken anmelden können. Dies ersetzt die Verwendung der Fassade.

/** * Redirects the User to the Facebook page to get authorization. * * @return Response */ public function facebook() { return $this->socialite->driver('facebook')->redirect(); }

Socialite für API - Stateless

public function facebook() { return $this->socialite->driver('facebook')->stateless()->redirect()->getTargetUrl(); }

Dadurch wird die URL, die der Benutzer der API angeben muss, an den Endbenutzer

https://riptutorial.com/de/home 158

Page 175: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

zurückgegeben, um eine Autorisierung von Facebook zu erhalten.

Prominente online lesen: https://riptutorial.com/de/laravel/topic/1312/prominente

https://riptutorial.com/de/home 159

Page 176: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 52: Richtlinien

Examples

Richtlinien erstellen

Da die Definition der gesamten Autorisierungslogik im AuthServiceProvider in großen Anwendungen mühsam werden kann, können Sie mit Laravel Ihre Autorisierungslogik in "Richtlinien" -Klassen unterteilen. Richtlinien sind einfache PHP-Klassen, die die Berechtigungslogik basierend auf der von ihnen autorisierten Ressource gruppieren.

Sie können eine Richtlinie mit dem Befehl make:policy artisan erstellen. Die generierte Richtlinie wird im app/Policies Verzeichnis abgelegt:

php artisan make:policy PostPolicy

Richtlinien online lesen: https://riptutorial.com/de/laravel/topic/7344/richtlinien

https://riptutorial.com/de/home 160

Page 177: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 53: Routenmodellbindung

Examples

Implizite Bindung

Laravel löst automatisch Eloquent-Modelle auf, die in Routen oder Controller-Aktionen definiert sind, deren Variablennamen mit einem Routensegmentnamen übereinstimmen. Zum Beispiel:

Route::get('api/users/{user}', function (App\User $user) { return $user->email; });

Da die auf der Route definierte Eloquent-$ -Variable mit dem {user} -Segment in der URI der Route übereinstimmt, fügt Laravel in diesem Beispiel automatisch die Modellinstanz ein, deren ID mit dem entsprechenden Wert der Anforderungs-URI übereinstimmt. Wenn keine übereinstimmende Modellinstanz in der Datenbank gefunden wird, wird automatisch eine 404-HTTP-Antwort generiert.

Wenn der Tabellenname des Modells aus mehreren Wörtern besteht, muss die Eingabevariable aus Kleinbuchstaben bestehen, damit die implizite Modellbindung funktioniert. Wenn der Benutzer beispielsweise eine Aktion ausführen kann und wir auf diese Aktion zugreifen möchten, lautet die Route folgendermaßen:

Route::get('api/useractions/{useraction}', function (App\UserAction $useraction) { return $useraction->description; });

Explizite Bindung

Verwenden Sie zum Registrieren einer expliziten Bindung die Modellmethode des Routers, um die Klasse für einen bestimmten Parameter anzugeben. Sie sollten Ihre expliziten Modellbindungen in der Boot-Methode der RouteServiceProvider-Klasse definieren

public function boot() { parent::boot(); Route::model('user', App\User::class); }

Als Nächstes können wir eine Route definieren, die den Parameter {user} enthält.

$router->get('profile/{user}', function(App\User $user) { });

https://riptutorial.com/de/home 161

Page 178: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Da wir alle {user} -Parameter an das App\User Modell gebunden haben, wird eine Benutzerinstanz in die Route eingefügt. So wird zum Beispiel bei einer Anfrage an profile/1 die Benutzerinstanz aus der Datenbank mit der ID 1 eingefügt .

Wenn keine übereinstimmende Modellinstanz in der Datenbank gefunden wird, wird automatisch eine 404-HTTP- Antwort generiert.

Routenmodellbindung online lesen: https://riptutorial.com/de/laravel/topic/7098/routenmodellbindung

https://riptutorial.com/de/home 162

Page 179: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 54: Routing

Examples

Grundlegendes Routing

Routing definiert eine Zuordnung zwischen HTTP-Methoden und URIs auf der einen Seite und Aktionen auf der anderen Seite. Routen werden normalerweise in die Datei app/Http/routes.php .

In ihrer einfachsten Form wird eine Route definiert, indem die entsprechende HTTP-Methode für die Route-Fassade aufgerufen wird. Als Parameter wird eine Zeichenfolge übergeben, die dem URI (relativ zum Anwendungsstamm) entspricht, und einem Rückruf.

Zum Beispiel: Eine Route zum Stamm-URI der Site, die eine Ansicht nach home zurückgibt, sieht folgendermaßen aus:

Route::get('/', function() { return view('home'); });

Eine Route für eine Post-Anfrage, die einfach die Post-Variablen wiedergibt:

Route::post('submit', function() { return Input::all(); }); //or Route::post('submit', function(\Illuminate\Http\Request $request) { return $request->all(); });

Routen, die auf eine Controller-Methode zeigen

Anstatt den Rückruf inline zu definieren, kann die Route auf eine Controller-Methode in der [ControllerClassName @ Method] -Syntax verweisen:

Route::get('login', 'LoginController@index');

Eine Route für mehrere Verben

Die match Methode kann verwendet werden, um ein Array von HTTP-Methoden für eine bestimmte Route abzugleichen:

https://riptutorial.com/de/home 163

Page 180: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Route::match(['GET', 'POST'], '/', 'LoginController@index');

Sie können auch all , um jede HTTP-Methode für eine bestimmte Route abzugleichen:

Route::all('login', 'LoginController@index');

Routengruppen

Routen können gruppiert werden, um Code-Wiederholungen zu vermeiden.

Angenommen, alle URIs mit dem Präfix /admin verwenden eine bestimmte Middleware mit dem Namen admin und sie befinden sich alle im Namensraum App\Http\Controllers\Admin .

Eine saubere Art, dies mithilfe von Routengruppen darzustellen, lautet wie folgt:

Route::group([ 'namespace' => 'Admin', 'middleware' => 'admin', 'prefix' => 'admin' ], function () { // something.dev/admin // 'App\Http\Controllers\Admin\IndexController' // Uses admin middleware Route::get('/', ['uses' => 'IndexController@index']); // something.dev/admin/logs // 'App\Http\Controllers\Admin\LogsController' // Uses admin middleware Route::get('/logs', ['uses' => 'LogsController@index']); });

Benannte Route

Benannte Routen werden verwendet, um eine URL zu generieren oder auf eine bestimmte Route umzuleiten. Der Vorteil der Verwendung einer benannten Route besteht darin, dass wir, wenn wir den URI einer Route in der Zukunft ändern, die URL nicht ändern oder Weiterleitungen auf diese Route umleiten müssen, wenn wir eine benannte Route verwenden. Wenn die Links jedoch mit der URL erzeugt wurden [z. url('/admin/login') ], dann müssten wir überall dort wechseln, wo sie verwendet wird.

Benannt Routen verwenden erstellt as Arrayschlüssel

Route::get('login', ['as' => 'loginPage', 'uses' => 'LoginController@index']);

oder ein Verfahren unter Verwendung von name

Route::get('login', 'LoginController@index')->name('loginPage');

https://riptutorial.com/de/home 164

Page 181: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

URL mit benannter Route generieren

So erstellen Sie eine URL mit dem Namen der Route

$url = route('loginPage');

Wenn Sie den Routennamen für die Umleitung verwenden

$redirect = Redirect::route('loginPage');

Routenparameter

Sie können Routenparameter verwenden, um den Teil des URI-Segments abzurufen. Sie können einen oder mehrere optionale Routenparameter definieren, während Sie eine Route erstellen. Optionale Parameter haben ein ? wird am Ende des Parameternamens angehängt. Dieser Name wird in einer geschweiften Klammern {}

Optionaler Parameter

Route::get('profile/{id?}', ['as' => 'viewProfile', 'uses' => 'ProfileController@view']);

Auf diese Route kann über domain.com/profile/23 zugegriffen werden, wobei 23 der id-Parameter ist. In diesem Beispiel wird die id als Parameter in der view Methode von ProfileController . Da dies ein optionaler Parameter ist, domain.com/profile Zugriff auf domain.com/profile .

Erforderlicher Parameter

Route::get('profile/{id}', ['as' => 'viewProfile', 'uses' => 'ProfileController@view']);

Beachten Sie, dass der Name des erforderlichen Parameters kein ? am Ende des Parameternamens.

Zugriff auf den Parameter in der Steuerung

In Ihrer Steuerung nimmt Ihre Ansichtsmethode einen Parameter mit dem gleichen Namen wie in der routes.php und kann wie eine normale Variable verwendet werden. Laravel sorgt für die Injektion des Wertes:

public function view($id){ echo $id; }

https://riptutorial.com/de/home 165

Page 182: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Fange alle Strecken

Wenn Sie alle Routen abrufen möchten, können Sie einen regulären Ausdruck wie gezeigt verwenden:

Route::any('{catchall}', 'CatchAllController@handle')->where('catchall', '.*');

Wichtig: Wenn Sie andere Routen haben und nicht wollen, dass der Catch-All stört, sollten Sie es am Ende setzen. Zum Beispiel:

Alle Routen abfangen, außer bereits definiert

Route::get('login', 'AuthController@login'); Route::get('logout', 'AuthController@logout'); Route::get('home', 'HomeController@home'); // The catch-all will match anything except the previous defined routes. Route::any('{catchall}', 'CatchAllController@handle')->where('catchall', '.*');

Routen werden in der Reihenfolge abgeglichen, in der sie deklariert sind

Dies ist ein allgemeines Problem bei Laravel-Routen. Routen werden in der Reihenfolge abgeglichen, in der sie deklariert sind. Die erste passende Route ist die, die verwendet wird.

Dieses Beispiel wird wie erwartet funktionieren:

Route::get('/posts/{postId}/comments/{commentId}', 'CommentController@show'); Route::get('/posts/{postId}', 'PostController@show');

Eine CommentController@show an /posts/1/comments/1 CommentController@show . Eine Get-Anfrage an /posts/1 PostController@show .

Dieses Beispiel funktioniert jedoch nicht auf dieselbe Weise:

Route::get('/posts/{postId}', 'PostController@show'); Route::get('/posts/{postId}/comments/{commentId}', 'CommentController@show');

Eine PostController@show an /posts/1/comments/1 PostController@show . Eine Get-Anfrage an /posts/1 PostController@show .

Da Laravel die erste übereinstimmende Route verwendet, entspricht die Anforderung an /posts/1/comments/1 Route::get('/posts/{postId}', 'PostController@show'); und weist die Variable $postId dem Wert 1/comments/1 . Dies bedeutet, dass CommentController@show niemals aufgerufen wird.

Routen ohne Berücksichtigung der Groß- und Kleinschreibung

https://riptutorial.com/de/home 166

Page 183: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Die Routen in Laravel unterscheiden zwischen Groß- und Kleinschreibung. Es bedeutet, dass eine Route wie

Route::get('login', ...);

stimmt mit einer GET-Anfrage für /login überein, jedoch nicht mit einer GET-Anfrage für /Login .

Damit Ihre Routen nicht zwischen Groß- und Kleinschreibung unterscheiden, müssen Sie eine neue Validator-Klasse erstellen, die die angeforderten URLs mit definierten Routen abgleichen soll. Der einzige Unterschied zwischen dem neuen Validator und dem vorhandenen Validator besteht darin, dass er den i- Modifikator am Ende des regulären Ausdrucks für die kompilierte Route anfügt, um zwischen Groß- und Kleinschreibung zu unterscheiden.

<?php namespace Some\Namespace; use Illuminate\Http\Request; use Illuminate\Routing\Route; use Illuminate\Routing\Matching\ValidatorInterface; class CaseInsensitiveUriValidator implements ValidatorInterface { public function matches(Route $route, Request $request) { $path = $request->path() == '/' ? '/' : '/'.$request->path(); return preg_match(preg_replace('/$/','i', $route->getCompiled()->getRegex()), rawurldecode($path)); } }

Damit Laravel Ihren neuen Prüfer verwenden kann, müssen Sie die Liste der Übereinstimmungen aktualisieren, die zum Abgleichen der URL mit einer Route verwendet werden, und den ursprünglichen UriValidator durch Ihren ersetzen.

Fügen Sie dazu oben in der Datei routes.php Folgendes hinzu:

<?php use Illuminate\Routing\Route as IlluminateRoute; use Your\Namespace\CaseInsensitiveUriValidator; use Illuminate\Routing\Matching\UriValidator; $validators = IlluminateRoute::getValidators(); $validators[] = new CaseInsensitiveUriValidator; IlluminateRoute::$validators = array_filter($validators, function($validator) { return get_class($validator) != UriValidator::class; });

Dadurch wird der ursprüngliche Prüfer entfernt und der Liste der Prüfer hinzugefügt.

Routing online lesen: https://riptutorial.com/de/laravel/topic/1284/routing

https://riptutorial.com/de/home 167

Page 184: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 55: Sammlungen

Syntax

$ collection = collect (['Value1', 'Value2', 'Value3']); // Schlüssel sind standardmäßig 0, 1, 2, ...,

Bemerkungen

Illuminate\Support\Collection bietet eine fließende und bequeme Schnittstelle für den Umgang mit Datenfeldern. Möglicherweise haben Sie diese verwendet, ohne es zu wissen. Beispielabfragen, die mehrere Datensätze abrufen, geben eine Instanz von Illuminate\Support\Collection .

Für aktuelle Dokumentation auf Sammlungen können Sie die offizielle Dokumentation finden hier

Examples

Sammlungen erstellen

Mit dem collect() Helper können Sie leicht neue Collection-Instanzen erstellen, indem Sie ein Array wie das folgende übergeben:

$fruits = collect(['oranges', 'peaches', 'pears']);

Wenn Sie keine Hilfsfunktionen verwenden möchten, können Sie eine neue Collection direkt mit der Klasse erstellen:

$fruits = new Illuminate\Support\Collection(['oranges', 'peaches', 'pears']);

Wie in den Anmerkungen erwähnt, geben Models standardmäßig eine Collection Instanz zurück. Sie können jedoch nach Bedarf Ihre eigenen Sammlungen erstellen. Wenn bei der Erstellung kein Array angegeben wird, wird eine leere Collection erstellt.

woher()

Sie können bestimmte Elemente aus einer Sammlung auswählen, indem Sie die where() Methode verwenden.

$data = [ ['name' => 'Taylor', 'coffee_drinker' => true], ['name' => 'Matt', 'coffee_drinker' => true] ]; $matt = collect($data)->where('name', 'Matt');

https://riptutorial.com/de/home 168

Page 185: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Dieser Code wählt alle Elemente aus der Sammlung aus, bei denen der Name 'Matt' lautet. In diesem Fall wird nur der zweite Artikel zurückgegeben.

Verschachtelung

Genau wie bei den meisten Array-Methoden in Laravel unterstützt where() die Suche nach verschachtelten Elementen. Lassen Sie uns das obige Beispiel erweitern, indem Sie ein zweites Array hinzufügen:

$data = [ ['name' => 'Taylor', 'coffee_drinker' => ['at_work' => true, 'at_home' => true]], ['name' => 'Matt', 'coffee_drinker' => ['at_work' => true, 'at_home' => false]] ]; $coffeeDrinkerAtHome = collect($data)->where('coffee_drinker.at_home', true);

Dies wird nur Taylor zurückgeben, da er zu Hause Kaffee trinkt. Wie Sie sehen, wird die Verschachtelung mit der Punktnotation unterstützt.

Ergänzungen

Wenn Sie eine Sammlung von Objekten anstelle von Arrays erstellen, können diese auch mit where() gefiltert werden. Die Collection versucht dann, alle gewünschten Eigenschaften zu erhalten.

5.3

Bitte beachten Sie, dass die where() -Methode seit Laravel 5.3 versucht, die Werte standardmäßig lose zu vergleichen. Das bedeutet, wenn Sie nach (int)1 suchen, werden auch alle Einträge zurückgegeben, die '1' enthalten. Wenn Sie dieses Verhalten nicht mögen, können Sie die whereStrict() -Methode verwenden.

Verwenden von Get zum Nachschlagen von Werten oder zum Rücksetzen des Standardwerts

Sie befinden sich häufig in einer Situation, in der Sie Variablen mit entsprechenden Werten suchen müssen und Sammlungen erfasst wurden.

Im folgenden Beispiel haben wir drei verschiedene Gebietsschemas in einem Array mit einem entsprechenden Anrufcode zugewiesen. Wir möchten in der Lage sein, ein Gebietsschema bereitzustellen und erhalten im Gegenzug den zugehörigen aufrufenden Code. Der zweite Parameter in get ist ein Standardparameter, wenn der erste Parameter nicht gefunden wird.

function lookupCallingCode($locale) { return collect([ 'de_DE' => 49,

https://riptutorial.com/de/home 169

Page 186: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

'en_GB' => 44, 'en_US' => 1, ])->get($locale, 44); }

Im obigen Beispiel können wir Folgendes tun

lookupCallingCode('de_DE'); // Will return 49 lookupCallingCode('sv_SE'); // Will return 44

Sie können sogar einen Rückruf als Standardwert übergeben. Das Ergebnis des Rückrufs wird zurückgegeben, wenn der angegebene Schlüssel nicht vorhanden ist:

return collect([ 'de_DE' => 49, 'en_GB' => 44, 'en_US' => 1, ])->get($locale, function() { return 44; });

Verwenden von Enthält, um zu überprüfen, ob eine Sammlung bestimmte Bedingungen erfüllt

Ein häufiges Problem ist das Sammeln von Elementen, die alle bestimmte Kriterien erfüllen müssen. Im folgenden Beispiel haben wir zwei Elemente für einen Diätplan zusammengestellt und möchten überprüfen, ob die Diät keine ungesunde Nahrung enthält.

// First we create a collection $diet = collect([ ['name' => 'Banana', 'calories' => '89'], ['name' => 'Chocolate', 'calories' => '546'] ]); // Then we check the collection for items with more than 100 calories $isUnhealthy = $diet->contains(function ($i, $snack) { return $snack["calories"] >= 100; });

In diesem Fall wird die Variable $isUnhealthy auf true gesetzt, wenn Schokolade die Bedingung erfüllt, und die Diät ist daher ungesund.

Verwenden von Pluck, um bestimmte Werte aus einer Sammlung zu extrahieren

Sie werden häufig eine Sammlung von Daten erhalten, bei denen Sie nur an Teilen der Daten interessiert sind.

Im Beispiel unten haben wir eine Teilnehmerliste bei einer Veranstaltung erhalten und möchten dem Reiseleiter eine einfache Liste mit Namen geben.

https://riptutorial.com/de/home 170

Page 187: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

// First we collect the participants $participants = collect([ ['name' => 'John', 'age' => 55], ['name' => 'Melissa', 'age' => 18], ['name' => 'Bob', 'age' => 43], ['name' => 'Sara', 'age' => 18], ]); // Then we ask the collection to fetch all the names $namesList = $partcipants->pluck('name') // ['John', 'Melissa', 'Bob', 'Sara'];

Sie können das pluck für Sammlungen von Objekten oder verschachtelten Arrays / Objekten mit Punktnotation verwenden.

$users = User::all(); // Returns Eloquent Collection of all users $usernames = $users->pluck('username'); // Collection contains only user names $users->load('profile'); // Load a relationship for all models in collection // Using dot notation, we can traverse nested properties $names = $users->pluck('profile.first_name'); // Get all first names from all user profiles

Mit Map können Sie jedes Element in einer Sammlung bearbeiten

Häufig müssen Sie die Struktur eines Datensatzes ändern und bestimmte Werte bearbeiten.

Im Beispiel unten haben wir eine Sammlung von Büchern mit angehängter Rabattmenge erhalten. Vielmehr haben wir eine Liste von Büchern, deren Preis bereits ermäßigt ist.

$books = [ ['title' => 'The Pragmatic Programmer', 'price' => 20, 'discount' => 0.5], ['title' => 'Continuous Delivery', 'price' => 25, 'discount' => 0.1], ['title' => 'The Clean Coder', 'price' => 10, 'discount' => 0.75], ]; $discountedItems = collect($books)->map(function ($book) { return ['title' => $book["title"], 'price' => $book["price"] * $book["discount"]]; }); //[ // ['title' => 'The Pragmatic Programmer', 'price' => 10], // ['title' => 'Continuous Delivery', 'price' => 12.5], // ['title' => 'The Clean Coder', 'price' => 5], //]

Dies könnte auch die Schlüssel verwendet werden , um zu ändern, lassen Sie uns sagen , dass wir den Schlüssel ändern wollte title name dies eine geeignete Lösung wäre.

Verwenden Sie sum, avg, min oder max für eine Sammlung für statistische Berechnungen

Sammlungen bieten Ihnen auch eine einfache Möglichkeit, einfache statistische Berechnungen durchzuführen.

https://riptutorial.com/de/home 171

Page 188: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$books = [ ['title' => 'The Pragmatic Programmer', 'price' => 20], ['title' => 'Continuous Delivery', 'price' => 30], ['title' => 'The Clean Coder', 'price' => 10], ] $min = collect($books)->min('price'); // 10 $max = collect($books)->max('price'); // 30 $avg = collect($books)->avg('price'); // 20 $sum = collect($books)->sum('price'); // 60

Eine Sammlung sortieren

Es gibt verschiedene Möglichkeiten, eine Sammlung zu sortieren.

Sortieren()

Die sort sortiert die Sammlung:

$collection = collect([5, 3, 1, 2, 4]); $sorted = $collection->sort(); echo $sorted->values()->all(); returns : [1, 2, 3, 4, 5]

Die sort ermöglicht auch das Übergeben eines benutzerdefinierten Rückrufs mit Ihrem eigenen Algorithmus. Unter der Haube sortieren Sie PHP- usort .

$collection = $collection->sort(function ($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; });

Sortiere nach()

Die sortBy Methode sortiert die Auflistung nach dem angegebenen Schlüssel:

$collection = collect([ ['name' => 'Desk', 'price' => 200], ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ]); $sorted = $collection->sortBy('price'); echo $sorted->values()->all();

https://riptutorial.com/de/home 172

Page 189: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

returns: [ ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ['name' => 'Desk', 'price' => 200], ]

Die sortBy Methode ermöglicht die Verwendung des Punktnotierungsformats für den Zugriff auf tiefere Schlüssel, um ein mehrdimensionales Array zu sortieren.

$collection = collect([ ["id"=>1,"product"=>['name' => 'Desk', 'price' => 200]], ["id"=>2, "product"=>['name' => 'Chair', 'price' => 100]], ["id"=>3, "product"=>['name' => 'Bookcase', 'price' => 150]], ]); $sorted = $collection->sortBy("product.price")->toArray(); return: [ ["id"=>2, "product"=>['name' => 'Chair', 'price' => 100]], ["id"=>3, "product"=>['name' => 'Bookcase', 'price' => 150]], ["id"=>1,"product"=>['name' => 'Desk', 'price' => 200]], ]

SortByDesc ()

Diese Methode hat dieselbe Signatur wie die sortBy Methode, sortiert die Auflistung jedoch in umgekehrter Reihenfolge.

Verwenden Sie reduzieren ()

Die reduce Methode reduziert die Sammlung auf einen einzelnen Wert und übergibt das Ergebnis jeder Iteration an die nachfolgende Iteration. Bitte siehe Methode reduzieren .

Die reduce durchläuft jedes Element mit einer Auflistung und erzeugt ein neues Ergebnis für die nächste Iteration. Jedes Ergebnis der letzten Iteration wird durch den ersten Parameter übergeben (in den folgenden Beispielen als $carry ).

Diese Methode kann viele Datenmengen für große Datenmengen verarbeiten. Für die folgenden Beispiele verwenden wir die folgenden Beispielstudiendaten:

$student = [ ['class' => 'Math', 'score' => 60], ['class' => 'English', 'score' => 61], ['class' => 'Chemistry', 'score' => 50], ['class' => 'Physics', 'score' => 49], ];

Summe der Gesamtpunktzahl des Schülers

$sum = collect($student) ->reduce(function($carry, $item){

https://riptutorial.com/de/home 173

Page 190: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

return $carry + $item["score"]; }, 0);

Ergebnis: 220

Erläuterung:

$carry ist das Ergebnis der letzten Iteration.•Der zweite Parameter ist der Standardwert für den $ carry in der ersten Iterationsrunde. In diesem Fall ist der Standardwert 0

Übergeben Sie einen Schüler, wenn alle Ergebnisse> = 50 sind

$isPass = collect($student) ->reduce(function($carry, $item){ return $carry && $item["score"] >= 50; }, true);

Ergebnis: false

Erläuterung:

Der Standardwert von $ carry ist wahr•Wenn alle Punkte größer als 50 sind, wird das Ergebnis als wahr zurückgegeben. Wenn weniger als 50, wird false zurückgegeben.

Versagen Sie einen Schüler, wenn eine Punktzahl <50 ist

$isFail = collect($student) ->reduce(function($carry, $item){ return $carry || $item["score"] < 50; }, false);

Ergebnis: true

Erklären:

Der Standardwert von $ carry ist false•Wenn eine Bewertung unter 50 liegt, geben Sie true zurück. Sind alle Werte größer als 50, wird false zurückgegeben.

Betreff mit der höchsten Punktzahl zurückgeben

$highestSubject = collect($student) ->reduce(function($carry, $item){ return $carry === null || $item["score"] > $carry["score"] ? $item : $carry; });

Ergebnis: [ "subject" => "English", "score" => 61 ]

Erklären:

https://riptutorial.com/de/home 174

Page 191: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Der zweite Parameter wird in diesem Fall nicht bereitgestellt.•

Der Standardwert von $ carry ist null, daher überprüfen wir dies in unserer Bedingung.•

Verwenden von macro () zum Erweitern von Sammlungen

Mit der Funktion macro() können Sie den Illuminate\Support\Collection Objekten neue Funktionen hinzufügen

Verwendungszweck:

Collection::macro("macro_name", function ($parameters) { // Your macro });

Zum Beispiel:

Collection::macro('uppercase', function () { return $this->map(function ($item) { return strtoupper($item); }); }); collect(["hello", "world"])->uppercase();

Ergebnis: ["HELLO", "WORLD"]

Verwenden der Array-Syntax

Das Collection Objekt implementiert die ArrayAccess und IteratorAggregate Schnittstelle, sodass diese wie ein Array verwendet werden kann.

Auf Sammlungselement zugreifen:

$collection = collect([1, 2, 3]); $result = $collection[1];

Ergebnis: 2

Neues Element zuweisen:

$collection = collect([1, 2, 3]); $collection[] = 4;

Ergebnis: $collection ist [1, 2, 3, 4]

Loop-Sammlung:

$collection = collect(["a" => "one", "b" => "two"]); $result = ""; foreach($collection as $key => $value){

https://riptutorial.com/de/home 175

Page 192: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$result .= "(".$key.": ".$value.") "; }

Ergebnis: $result ist (a: one) (b: two)

Konvertierung von Array in Collection:

Um eine Collection in ein natives PHP-Array zu konvertieren, verwenden Sie:

$array = $collection->all(); //or $array = $collection->toArray()

Verwenden Sie zum Konvertieren eines Arrays in eine Sammlung Folgendes:

$collection = collect($array);

Verwenden von Sammlungen mit Array-Funktionen

Bitte beachten Sie, dass Sammlungen normale Objekte sind, die nicht ordnungsgemäß konvertiert werden, wenn sie von Funktionen verwendet werden, die explizit Arrays erfordern, wie array_map($callback) .

Stellen Sie sicher, dass Sie die Auflistung zuerst konvertieren, oder verwenden Sie stattdessen die von der Collection Klasse bereitgestellte Methode: $collection->map($callback)

Sammlungen online lesen: https://riptutorial.com/de/laravel/topic/2358/sammlungen

https://riptutorial.com/de/home 176

Page 193: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 56: Seitennummerierung

Examples

Paginierung in Laravel

In anderen Rahmen ist die Paginierung Kopfschmerzen. Laravel macht es einfach, es kann Paginierung erzeugen, indem einige Codezeilen in Controller und View eingefügt werden.

Grundlegende Verwendung

Es gibt viele Möglichkeiten, Elemente zu paginieren, aber die einfachste ist die Verwendung der paginate-Methode für den Query Builder oder eine Eloquent-Abfrage . Laravel im Auslieferungszustand sorgt für die Einstellung von Grenzwert und Versatz basierend auf der aktuellen Seite, die vom Benutzer angezeigt wird. Standardmäßig wird die aktuelle Seite vom Wert des Arguments für die Abfragezeichenfolge der HTTP-Anforderung erkannt. Dieser Wert wird von Laravel selbstverständlich automatisch erkannt und in von Paginator generierte Links eingefügt.

Nehmen wir an, wir wollen die paginate Methode bei einer Abfrage aufrufen. In unserem Beispiel ist das übergebene Argument für die Paginierung die Anzahl der Elemente, die Sie "pro Seite" anzeigen möchten. In unserem Fall wollen wir 10 Elemente pro Seite anzeigen.

<?php namespace App\Http\Controllers; use DB; use App\Http\Controllers\Controller; class UserController extends Controller { /** * Show all of the users for the application. * * @return Response */ public function index() { $users = DB::table('users')->paginate(10); return view('user.index', ['users' => $users]); } }

Hinweis: Derzeit können Paginierungsoperationen, die eine groupBy Anweisung verwenden, von Laravel nicht effizient ausgeführt werden. Wenn Sie eine groupBy mit einer paginierten Ergebnismenge verwenden müssen, wird empfohlen, dass Sie die Datenbank abfragen und einen Paginator manuell erstellen.

Einfache Paginierung

https://riptutorial.com/de/home 177

Page 194: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Angenommen, Sie möchten nur die Links Weiter und Zurück in Ihrer Paginierungsansicht anzeigen. Laravel bietet Ihnen diese Option mithilfe der simplePaginate Methode.

$users = DB::table('users')->simplePaginate(10);

Ergebnisse in einer Ansicht anzeigen

Jetzt können Sie die Paginierung in der Ansicht anzeigen. Eigentlich , wenn Sie den Anruf paginate oder simplePaginate Methoden auf Eloquent Abfrage erhalten Sie eine paginator Instanz. Wenn die Paginate-Methode aufgerufen wird, erhalten Sie eine Instanz von Illuminate\Pagination\LengthAwarePaginator . Wenn Sie die simplePaginate Methode simplePaginate , erhalten Sie eine Instanz von Illuminate\Pagination\Paginator . Diese Instanzen / Objekte werden mit mehreren Methoden geliefert, die die Ergebnismenge erklären. Zusätzlich zu diesen Hilfsmethoden sind die Paginator-Instanzen Iteratoren und können als Array geschleift werden.

Sobald Sie die Ergebnisse erhalten haben, können Sie die Seitenlinks mit Hilfe von Blade leicht rendern

<div class="container"> @foreach ($users as $user) {{ $user->name }} @endforeach </div> {{ $users->links() }}

Die links zeigt die Verknüpfungen zu anderen Seiten in der Ergebnismenge automatisch an. Jeder dieser Links enthält die spezifische Seitennummer, dh die Zeichenfolgenvariable ?page . Der durch die links-Methode generierte HTML-Code ist perfekt mit dem Bootstrap-CSS-Framework kompatibel .

Ändern der Seitenumbrüche

Während der Verwendung der Laravel-Paginierung können Sie Ihre eigenen benutzerdefinierten Ansichten verwenden. Wenn Sie die links-Methode in einer Paginator-Instanz aufrufen, übergeben Sie den Ansichtsnamen als erstes Argument an die Methode:

{{ $paginator->links('view.name') }}

oder

Sie können die Paginierungsansichten anpassen, indem Sie sie mit dem Befehl vendor: publish in das Verzeichnis resources/views/vendor exportieren:

php artisan vendor:publish --tag=laravel-pagination

Mit diesem Befehl werden die Ansichten im Verzeichnis resources/views/vendor/pagination . Die Datei default.blade.php in diesem Verzeichnis entspricht der Standard-Seitenumbruchansicht. Bearbeiten Sie diese Datei, um den HTML-Code für die Paginierung zu ändern.

https://riptutorial.com/de/home 178

Page 195: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Seitennummerierung online lesen: https://riptutorial.com/de/laravel/topic/2359/seitennummerierung

https://riptutorial.com/de/home 179

Page 196: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 57: Sparkpost-Integration mit Laravel 5.4

Einführung

Laravel 5.4 ist mit Sparkpost Api Lib vorinstalliert. Sparkpost lib erfordert einen geheimen Schlüssel, den Sie in Ihrem Sparkpost-Konto finden können.

Examples

Beispieldaten für die .env-Datei

Um ein Sparkpost-E-Mail-API-Setup erfolgreich zu erstellen, fügen Sie der env-Datei die unten angegebenen Details hinzu. Ihre Anwendung eignet sich gut, um E-Mails zu senden. MAIL_DRIVER = Funkenpfosten SPARKPOST_SECRET = HINWEIS: Die obigen Details enthalten nicht den Code, der in einem Controller geschrieben wurde, der die Geschäftslogik zum Senden von E-Mails mithilfe der Mail :: send-Funktion von laravels enthält.

Sparkpost-Integration mit Laravel 5.4 online lesen: https://riptutorial.com/de/laravel/topic/10136/sparkpost-integration-mit-laravel-5-4

https://riptutorial.com/de/home 180

Page 197: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 58: Stellen Sie die Laravel 5-App auf Shared Hosting unter Linux Server bereit

Bemerkungen

Weitere Informationen zum Bereitstellen des Laravel-Projekts für Shared Hosting finden Sie in diesem Github-Repo.

Examples

Laravel 5 App für Shared Hosting auf Linux Server

Standardmäßig macht der public Ordner des Laravel-Projekts den Inhalt der App verfügbar, der von jedem beliebigen Benutzer angefordert werden kann. Der Rest des App-Codes ist für jeden ohne die entsprechenden Berechtigungen unsichtbar oder unzugänglich.

Nachdem Sie die Anwendung auf Ihrem Entwicklungscomputer entwickelt haben, muss sie auf einen Produktionsserver übertragen werden, damit Sie von überall aus über das Internet darauf zugreifen können.

Für die meisten Apps / Websites ist die erste Wahl die Verwendung eines Shared Hosting-Pakets von Hosting-Dienstleistern wie GoDaddy, HostGator usw., hauptsächlich aufgrund niedriger Kosten.

Hinweis : Sie können Ihren Provider auffordern, document_root manuell zu ändern. Alles, was Sie tun müssen, ist, Ihre Laravel-Anwendung auf den Server hochzuladen (über FTP), die Änderung des Root-Verzeichnisses in {app} / public anzufordern, und Sie sollten zufrieden sein.

Für solche gemeinsam genutzten Hosting-Pakete gelten jedoch Einschränkungen hinsichtlich des Terminalzugriffs und der Dateiberechtigungen. Standardmäßig muss der App / Code in den Ordner public_html des freigegebenen Hosting-Kontos hochgeladen werden.

Wenn Sie also ein Laravel-Projekt auf ein gemeinsam genutztes Hosting-Konto hochladen möchten, wie würden Sie dieses Problem lösen? Sollten Sie die gesamte App (Ordner) in den Ordner public_html Ihres freigegebenen Hosting-Kontos hochladen? - Sicher nein

Weil alles im Ordner public_html "öffentlich, dh von jedermann", zugänglich ist, was ein großes Sicherheitsrisiko darstellt.

Schritte zum Hochladen eines Projekts auf ein Shared-Hosting-Konto - der Laravel-Weg

Schritt 1 Erstellen Sie auf der gleichen Ebene wie der Ordner public_html einen Ordner namens laravel (oder beliebiges anderes).

https://riptutorial.com/de/home 181

Page 198: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Eg: / |--var |---www |----laravel //create this folder in your shared hosting account |----public_html |----log

Schritt 2 Kopieren Sie alles außer dem public Ordner aus Ihrem Laravel-Projekt (auf dem Entwicklungscomputer) im laravel Ordner (auf dem Serverhost - Shared Hosting-Konto). Sie können verwenden:

C-Panel: was wäre die langsamste Option•FTP-Client: wie FileZilla , um eine Verbindung zu Ihrem freigegebenen Hosting-Konto herzustellen und Ihre Dateien und Ordner per FTP-Upload zu übertragen

Netzwerklaufwerk zuordnen: Sie können auf Ihrem Entwicklungscomputer auch ein zugeordnetes Netzwerklaufwerk erstellen, um eine Verbindung zum Stammordner Ihres freigegebenen Hosting-Kontos herzustellen, indem Sie als Netzwerkadresse " ftp: // Ihr-Domänenname " verwenden.

Schritt 3 Öffnen Sie den public Ordner Ihres Laravel-Projekts (auf dem Entwicklungscomputer), kopieren Sie alles und fügen Sie es in den Ordner public_html (auf dem Serverhost - Shared Hosting-Konto) ein. Schritt 4 Öffnen Sie nun die Datei index.php im Ordner public_html des freigegebenen Hosting-Kontos (im Cpanel-Editor oder einem anderen verbundenen Editor) und:

Veränderung:

require __DIR__.'/../bootstrap/autoload.php';

Zu:

require __DIR__.'/../laravel/bootstrap/autoload.php';

Und ändern:

$app = require_once __DIR__.'/../bootstrap/app.php';

Zu:

$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

Speichern und schließen.

Schritt 5 Gehen Sie jetzt zum laravel Ordner (auf dem Shared Hosting-Konto -server) und öffnen

https://riptutorial.com/de/home 182

Page 199: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

server.php Datei server.php Veränderung

require_once __DIR__.'/public/index.php';

Zu:

require_once __DIR__.'../public_html/index.php';

Speichern und schließen.

Schritt 6 laravel/storage Dateiberechtigungen für den laravel/storage (rekursiv) und alle Dateien, Unterordner und Dateien auf dem gemeinsam genutzten Hosting-Konto - Server auf 777 . Hinweis: Seien Sie vorsichtig mit den Dateiberechtigungen in Linux. Sie sind wie ein zweischneidiges Schwert. Wenn sie nicht korrekt verwendet werden, kann Ihre App für Angriffe anfällig werden. Zum Verständnis der Dateiberechtigungen für Linux lesen Sie https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions

Schritt 7

Da die .env Datei des lokalen / Entwicklungsservers von git ignoriert wird, sollte sie ignoriert werden, da sie alle Umgebungsvariablen einschließlich APP_KEY enthält und nicht für public verfügbar gemacht werden darf, indem sie in die Repositorys verschoben wird. Sie können auch sehen, dass die .gitignore Datei .env erwähnt hat, so dass sie nicht in Repositorys .env wird.

Nachdem Sie alle oben genannten Schritte ausgeführt haben, .env eine .env Datei im laravel-Ordner und fügen Sie alle Umgebungsvariable, die Sie aus der lokalen / Entwicklungsserver- .env Datei verwendet haben, zur .env Datei des Produktionsservers hinzu.

Es gibt sogar Konfigurationsdateien wie app.php , database.php im config-Ordner der laravel-Anwendung, die diese Variablen standardmäßig im zweiten Parameter von env() aber die Werte in diesen Dateien nicht fest app.php , da dies Auswirkungen auf die. Hat Konfigurationsdateien der Benutzer, die Ihr Repository abrufen. Es wird daher empfohlen, die .env Datei manuell zu erstellen!

Auch Laravel gibt die .env-example , die Sie als Referenz verwenden können.

Das ist es.

Wenn Sie nun die URL aufrufen, die Sie als Domäne mit Ihrem Server konfiguriert haben, sollte Ihre Laravel-App genauso funktionieren wie auf Ihrem Localhost-Entwicklungscomputer. Der Anwendungscode ist jedoch immer noch sicher und für niemanden ohne entsprechende Dateiberechtigungen zugänglich.

Stellen Sie die Laravel 5-App auf Shared Hosting unter Linux Server bereit online lesen: https://riptutorial.com/de/laravel/topic/2410/stellen-sie-die-laravel-5-app-auf-shared-hosting-unter-linux-server-bereit

https://riptutorial.com/de/home 183

Page 200: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 59: Testen

Examples

Einführung

Das Schreiben von überprüfbarem Code ist ein wichtiger Bestandteil des Aufbaus eines robusten, wartbaren und agilen Projekts. Die Unterstützung des am weitesten verbreiteten Testframeworks von PHP, PHPUnit , ist direkt in Laravel integriert. PHPUnit wird mit der Datei phpunit.xml konfiguriert, die sich im Stammverzeichnis jeder neuen Laravel-Anwendung befindet.

Das tests , auch im Stammverzeichnis, enthält die einzelnen Testdateien, die die Logik zum Testen jedes Teils Ihrer Anwendung enthalten. Natürlich liegt es in Ihrer Verantwortung als Entwickler, diese Tests zu schreiben, während Sie Ihre Anwendung erstellen. Laravel enthält jedoch eine Beispieldatei ( ExampleTest.php , die Sie zum Laufen ExampleTest.php .

<?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseTransactions; class ExampleTest extends TestCase { /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->visit('/') ->see('Laravel 5'); } }

In der testBasicExample() -Methode besuchen wir die testBasicExample() der Site und stellen sicher, dass der Text Laravel 5 irgendwo auf dieser Seite testBasicExample() . Wenn der Text nicht vorhanden ist, schlägt der Test fehl und generiert einen Fehler.

Testen Sie ohne Middleware und mit einer frischen Datenbank

use DatabaseMigrations um die Aktualisierung einer neuen Datenbank durch Handwerker vor dem Ausführen von Tests zu ermöglichen. Wenn Sie Middleware wie Auth vermeiden möchten, use WithoutMiddleware .

<?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations;

https://riptutorial.com/de/home 184

Page 201: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

class ExampleTest extends TestCase { use DatabaseMigrations, WithoutMiddleware; /** * A basic functional test example. * * @return void */ public function testExampleIndex() { $this->visit('/protected-page') ->see('All good'); } }

Datenbanktransaktionen für mehrere Datenbankverbindungen

DatabaseTransactions Eigenschaft DatabaseTransactions können Datenbanken die Änderungen während der Tests rückgängig machen. Wenn Sie mehrere Datenbanken zurücksetzen möchten, müssen Sie $connectionsToTransact Eigenschaften von $connectionsToTransact festlegen

use Illuminate\Foundation\Testing\DatabaseMigrations; class ExampleTest extends TestCase { use DatabaseTransactions; $connectionsToTransact =["mysql","sqlite"] //tell Laravel which database need to rollBack public function testExampleIndex() { $this->visit('/action/parameter') ->see('items'); } }

Testen der Einrichtung unter Verwendung der Speicherdatenbank

Das folgende Setup stellt sicher, dass das Testframework (PHPUnit) verwendet :memory: Datenbank.

config / database.php

'connections' => [ 'sqlite_testing' => [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', ], . . .

https://riptutorial.com/de/home 185

Page 202: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

./phpunit.xml

. . . </filter> <php> <env name="APP_ENV" value="testing"/> <env name="APP_URL" value="http://example.dev"/> <env name="CACHE_DRIVER" value="array"/> <env name="SESSION_DRIVER" value="array"/> <env name="QUEUE_DRIVER" value="sync"/> <env name="DB_CONNECTION" value="sqlite_testing"/> </php> </phpunit>

Aufbau

Die Datei phpunit.xml ist die Standardkonfigurationsdatei für Tests und ist bereits zum Testen mit PHPUnit eingerichtet.

Die Standardtestumgebung APP_ENV ist als testing definiert testing wobei das array der CACHE_DRIVER . Bei diesem Setup werden beim Testen keine Daten (Sitzung / Cache) gespeichert.

Um Tests in einer bestimmten Umgebung wie dem Homestead durchzuführen, können die Standardeinstellungen wie folgt geändert werden:

<env name="DB_HOST" value="192.168.10.10"/> <env name="DB_DATABASE" value="homestead"/> <env name="DB_USERNAME" value="homestead"/> <env name="DB_PASSWORD" value="secret"/>

Oder verwenden Sie eine temporäre Datenbank in Arbeitsspeicher :

<env name="DB_CONNECTION" value="sqlite"/> <env name="DB_DATABASE" value=":memory:"/>

Eine letzte Bemerkung aus der Laravel-Dokumentation :

Löschen Sie Ihren Konfigurationscache unbedingt mit dem Befehl config:clear Artisan, bevor Sie die Tests ausführen!

Testen online lesen: https://riptutorial.com/de/laravel/topic/1249/testen

https://riptutorial.com/de/home 186

Page 203: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 60: Token Mismatch Error in AJAX

Einführung

Ich habe analysiert, dass das Verhältnis von TokenMismatch Error sehr hoch ist. Und dieser Fehler tritt aufgrund einiger dummer Fehler auf. Es gibt viele Gründe, aus denen Entwickler Fehler machen. Hier einige Beispiele, z. B. Kein _token für Kopfzeilen, Keine _token übergebenen Daten bei Verwendung von Ajax, Berechtigungsprobleme für den Speicherpfad, ein ungültiger Sitzungsspeicherpfad.

Examples

Setup-Token im Header

Setzen Sie das Token auf <head> Ihrer default.blade.php .

<meta name="csrf-token" content="{{csrf_token()}}">

Fügen Sie ajaxSetup oben in Ihr Skript ein, auf das von überall aus ajaxSetup werden kann. Dadurch werden bei jedem ajax Aufruf Kopfzeilen festgelegt

$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });

Token aktivierenEtikett

Fügen Sie Ihrem <form> -Tag die folgende Funktion hinzu. Diese Funktion generiert ein verstecktes Feld mit dem Namen _token und einem mit dem Token gefüllten Wert.

{{csrf_field()}}

Fügen csrf_token () Funktion csrf_token () zu Ihrem verborgenen _token im value-Attribut hinzu. Dadurch wird nur eine verschlüsselte Zeichenfolge generiert.

<input type="hidden" name="_token" value="{{csrf_token()}}"/> .

Überprüfen Sie den Speicherpfad und die Berechtigung für die Sitzung

Hier APP_URL=http://project.dev/ts/toys-store ich davon aus, dass die Projekt-App-URL APP_URL=http://project.dev/ts/toys-store

storage_path('framework/sessions') Sie die schreibbare Berechtigung auf 1.

https://riptutorial.com/de/home 187

Page 204: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

storage_path('framework/sessions') den Ordner fest.Überprüfen Sie den Pfad Ihres Laravel-Projekts 'path' => '/ts/toys-store', die Wurzel Ihres Laravel-Projekts.

2.

Ändern Sie den Namen Ihres Cookies 'cookie' => 'toys-store',3.

return [ 'driver' => env('SESSION_DRIVER', 'file'), 'lifetime' => 120, 'expire_on_close' => false, 'encrypt' => false, 'files' => storage_path('framework/sessions'), 'connection' => null, 'table' => 'sessions', 'lottery' => [2, 100], 'cookie' => 'toys-store', 'path' => '/ts/toys-store', 'domain' => null, 'secure' => false, 'http_only' => true, ];

Verwenden Sie das Feld _token für Ajax

Es gibt viele Möglichkeiten, _token bei einem AJAX-Anruf zu senden

var formData = new FormData($("#cart-add")[0]); Sie alle Werte des Eingabefelds im <form> -Tag mit var formData = new FormData($("#cart-add")[0]);

1.

Verwenden Sie $("form").serialize(); oder $("form").serializeArray();2. Fügen Sie _token manuell zu den data von Ajax hinzu. mit $('meta[name="csrf-token"]').attr('content') oder $('input[name="_token"]').val() .

3.

Wir können als Header für einen bestimmten Ajax-Aufruf wie im folgenden Code festlegen.4.

$.ajax({ url: $("#category-add").attr("action"), type: "POST", data: formData, processData: false, contentType: false, dataType: "json", headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });

Token Mismatch Error in AJAX online lesen: https://riptutorial.com/de/laravel/topic/10656/token-mismatch-error-in-ajax

https://riptutorial.com/de/home 188

Page 205: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 61: Validierung

Parameter

Parameter Einzelheiten

erforderlich Das Feld ist erforderlich

manchmalValidierungsprüfungen für ein Feld nur ausführen, wenn dieses Feld im Eingabearray vorhanden ist

Email Die Eingabe ist eine gültige E-Mail

max: wert Der Eingabewert sollte unter dem Maximalwert liegen

eindeutig: db_table_name

Der Eingabewert sollte im angegebenen Namen der Datenbanktabelle eindeutig sein

akzeptiert Ja / Ein / 1 wahr, nützlich zum Überprüfen der TOS

active_url Muss eine gültige URL laut checkdnsrr sein

nach : datumDas zu validierende Feld muss einen Wert nach dem angegebenen Datum angeben

Alpha Das zu validierende Feld muss vollständig aus Buchstaben bestehen.

alpha_dashDas zu validierende Feld kann alphanumerische Zeichen sowie Bindestriche und Unterstriche enthalten.

alpha_numDas zu validierende Feld muss vollständig aus alphanumerischen Zeichen bestehen.

Array Muss ein PHP- Array sein

vor : Datum Das Feld muss einen Wert unter dem angegebenen Datum haben

zwischen: min, max

Der Eingabewert sollte zwischen minimalem (min) und maximalem (max) Wert liegen

booleanDas zu validierende Feld muss als Boolean umgewandelt werden können. Zulässige Eingaben sind true , false , 1 , 0 , "1" und "0" .

Bestätigt

Das zu validierende Feld muss ein übereinstimmendes Feld für foo_confirmation . Wenn das Feld unter Validierung ist zum Beispiel password , ein passendes password_confirmation muss Feld in der Eingabe vorhanden sein.

https://riptutorial.com/de/home 189

Page 206: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Parameter Einzelheiten

DatumDas zu validierende Feld muss gemäß der strtotime- PHP-Funktion ein gültiges Datum sein.

ganze Zahl Das zu validierende Feld muss eine ganze Zahl sein

Schnur Das zu validierende Feld muss ein Zeichenfolgentyp sein .

Examples

Basisbeispiel

Sie können Anfragedaten mit der validate Methode validate (verfügbar im Basis-Controller, bereitgestellt von der Eigenschaft ValidatesRequests ).

Wenn die Regeln erfüllt sind, wird Ihr Code normal ausgeführt. Schlägt die Validierung fehl, wird automatisch eine Fehlerantwort mit den Validierungsfehlern zurückgesendet:

Bei typischen HTML-Formularanfragen wird der Benutzer zur vorherigen Seite weitergeleitet, wobei das Formular die übergebenen Werte enthält

Für Anforderungen, die eine JSON-Antwort erwarten, wird eine HTTP-Antwort mit Code 422 generiert

In Ihrem UserController speichern Sie beispielsweise einen neuen Benutzer in der store Methode, für den vor dem Speichern eine Überprüfung erforderlich ist.

/** * @param Request $request * @return Response */ public function store(Request $request) { $this->validate($request, [ 'name' => 'required', 'email' => 'email|unique:users|max:255' ], // second array of validation messages can be passed here [ 'name.required' => 'Please provide a valid name!', 'email.required' => 'Please provide a valid email!', ]); // The validation passed }

In dem obigen Beispiel bestätigen wir , dass der name Feld mit nicht leeren Wert vorhanden ist . Zweitens prüfen wir, ob das email Feld ein gültiges E-Mail-Format hat, in der Datenbanktabelle "Benutzer" eindeutig ist und eine maximale Länge von 255 Zeichen hat.

Die | Das Zeichen (Pipe) kombiniert verschiedene Validierungsregeln für ein Feld.

Manchmal möchten Sie vielleicht nach dem ersten Validierungsfehler die Ausführung von

https://riptutorial.com/de/home 190

Page 207: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Validierungsregeln für ein Attribut beenden. bail dem Attribut die bail Regel zu:

$this->validate($request, [ 'name' => 'bail|required', 'email' => 'email|unique:users|max:255' ]);

Die vollständige Liste der verfügbaren Validierungsregeln finden Sie im Abschnitt Parameter unten .

Array-Überprüfung

Die Überprüfung der Eingabefelder für Array-Formulare ist sehr einfach.

Angenommen, Sie müssen jeden Namen, jede E-Mail-Adresse und den Namen jedes Vaters in einem bestimmten Array überprüfen. Sie könnten folgendes tun:

$validator = \Validator::make($request->all(), [ 'name.*' => 'required', 'email.*' => 'email|unique:users', 'fatherName.*' => 'required' ]); if ($validator->fails()) { return back()->withInput()->withErrors($validator->errors()); }

Laravel zeigt Standardmeldungen zur Überprüfung an. Wenn Sie jedoch benutzerdefinierte Meldungen für Array-basierte Felder wünschen, können Sie den folgenden Code hinzufügen:

[ 'name.*' => [ 'required' => 'Name field is required', ], 'email.*' => [ 'unique' => 'Unique Email is required', ], 'fatherName.*' => [ 'required' => 'Father Name required', ] ]

Ihr endgültiger Code wird folgendermaßen aussehen:

$validator = \Validator::make($request->all(), [ 'name.*' => 'required', 'email.*' => 'email|unique:users', 'fatherName.*' => 'required', ], [ 'name.*' => 'Name Required', 'email.*' => 'Unique Email is required', 'fatherName.*' => 'Father Name required', ]);

https://riptutorial.com/de/home 191

Page 208: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

if ($validator->fails()) { return back()->withInput()->withErrors($validator->errors()); }

Andere Validierungsansätze

1) Formularanforderungsbestätigung

Sie können eine "Formularanforderung" erstellen, die die Berechtigungslogik, Validierungsregeln und Fehlernachrichten für eine bestimmte Anforderung in Ihrer Anwendung enthalten kann.

Der CLI-Befehl make:request Artisan generiert die Klasse und platziert sie im Verzeichnis app/Http/Requests :

php artisan make:request StoreBlogPostRequest

Die authorize kann mit der Berechtigungslogik für diese Anforderung überschrieben werden:

public function authorize() { return $this->user()->can('post'); }

Die rules Methode kann mit den spezifischen Regeln für diese Anforderung überschrieben werden:

public function rules() { return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; }

Die messages kann mit den spezifischen Nachrichten für diese Anforderung überschrieben werden:

public function messages() { return [ 'title.required' => 'A title is required', 'title.unique' => 'There is another post with the same title', 'title.max' => 'The title may not exceed :max characters', 'body.required' => 'A message is required', ]; }

Um die Anfrage zu validieren, geben Sie einfach die spezifische Request-Klasse der entsprechenden Controller-Methode an. Wenn die Überprüfung fehlschlägt, wird eine Fehlerantwort zurückgesendet.

public function store(StoreBlogPostRequest $request)

https://riptutorial.com/de/home 192

Page 209: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

{ // validation passed }

2) Validatoren manuell erstellen

Für mehr Flexibilität möchten Sie möglicherweise einen Validator manuell erstellen und die fehlgeschlagene Validierung direkt abwickeln:

<?php namespace App\Http\Controllers; use Validator; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class PostController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } // Store the blog post... } }

2) Regeln fließend erstellen

Gelegentlich müssen Sie gelegentlich eindeutige Regeln erstellen. Das Arbeiten mit der boot() -Methode innerhalb eines Service Providers ist möglicherweise zu hoch. Ab Laravel 5.4 können Sie mithilfe der Rule Klasse neue Regeln problemlos erstellen.

Als Beispiel arbeiten wir mit der UserRequest wenn Sie einen Benutzer einfügen oder aktualisieren möchten. Im Moment möchten wir einen Namen benötigen und die E-Mail-Adresse muss eindeutig sein. Das Problem bei der Verwendung der unique Regel besteht darin, dass beim Bearbeiten eines Benutzers dieselbe E-Mail-Adresse beibehalten werden kann. Daher müssen Sie den aktuellen Benutzer von der Regel ausschließen. Das folgende Beispiel zeigt, wie Sie dies mit der neuen Rule problemlos tun können.

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Http\Request; use Illuminate\Validation\Rule;

https://riptutorial.com/de/home 193

Page 210: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

class UserRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules(Request $request) { $id = $request->route()->getParameter('user'); return [ 'name' => 'required', // Notice the value is an array and not a string like usual 'email' => [ 'required', Rule::unique('users')->ignore($id) ] ]; } }

Einzelformular-Anforderungsklasse für POST, PUT, PATCH

Nach dem Beispiel 'Form Request Validation' kann dieselbe Request-Klasse für POST , PUT , PATCH sodass Sie keine weitere Klasse erstellen müssen, die dieselben / ähnliche Validierungen verwendet. Dies ist praktisch, wenn Sie in Ihrer Tabelle eindeutige Attribute haben.

/** * Get the validation rules that apply to the request. * * @return array */ public function rules() { switch($this->method()) { case 'GET': case 'DELETE': return []; case 'POST': return [ 'name' => 'required|max:75|unique', 'category' => 'required', 'price' => 'required|between:0,1000', ]; case 'PUT': case 'PATCH': return [

https://riptutorial.com/de/home 194

Page 211: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

'name' => 'required|max:75|unique:product,name,' . $this->product, 'category' => 'required', 'price' => 'required|between:0,1000', ]; default:break; } }

In der switch-Anweisung wird der Methodentyp der Anforderung ( GET , DELETE , POST , PUT , PATCH ) von oben betrachtet.

Abhängig von der Methode wird das definierte Array von Regeln zurückgegeben. Wenn Sie ein Feld haben , die einzigartig, wie das ist name im Beispiel Feld, müssen Sie eine bestimmte ID für die Validierung festlegen zu ignorieren.

'field_name' => 'unique:table_name,column_name,' . $idToIgnore`

Wenn Sie einen Primärschlüssel mit einer anderen Bezeichnung als id , geben Sie die Primärschlüsselspalte als vierten Parameter an.

'field_name' => 'unique:table_name,column_name,' . $idToIgnore . ',primary_key_column'

In diesem Beispiel verwenden wir PUT und übergeben den Wert der Produkt-ID an die Route ( admin/products/{product} ). $this->product entspricht also der zu ignorierenden id .

Jetzt müssen Ihre PUT|PATCH und POST Überprüfungsregeln nicht die gleichen sein. Definieren Sie Ihre Logik, die Ihren Anforderungen entspricht. Mit dieser Technik können Sie die benutzerdefinierten Nachrichten wiederverwenden, die Sie möglicherweise in der benutzerdefinierten Formularanforderungsklasse definiert haben.

Fehlermeldungen

Anpassen von Fehlermeldungen

Die Dateien /resources/lang/[lang]/validation.php enthalten die /resources/lang/[lang]/validation.php , die vom /resources/lang/[lang]/validation.php verwendet werden sollen. Sie können sie nach Bedarf bearbeiten.

Die meisten von ihnen haben Platzhalter, die beim Generieren der Fehlermeldung automatisch ersetzt werden.

Zum Beispiel in 'required' => 'The :attribute field is required.' , Der Platzhalter für das :attribute wird durch den Feldnamen ersetzt (alternativ können Sie auch den Anzeigewert jedes Felds im attributes Array in derselben Datei anpassen).

Beispiel

Nachrichtenkonfiguration:

https://riptutorial.com/de/home 195

Page 212: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

'required' => 'Please inform your :attribute.', //... 'attributes => [ 'email' => 'E-Mail address' ]

Regeln:

`email' => `required`

resultierende Fehlermeldung:

"Bitte informieren Sie Ihre E-Mail-Adresse."

Anpassen von Fehlermeldungen innerhalb einer Request-Klasse

Die Request-Klasse hat Zugriff auf eine messages() -Methode, die ein Array zurückgeben soll. Dies kann zum Überschreiben von Nachrichten verwendet werden, ohne in die lang-Dateien gehen zu müssen. Wenn wir beispielsweise über eine benutzerdefinierte file_exists , können Sie die unten stehenden Meldungen verwenden.

class SampleRequest extends Request { /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'image' => 'required|file_exists' ]; } /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } public function messages() { return [ 'image.file_exists' => 'That file no longer exists or is invalid' ]; }

https://riptutorial.com/de/home 196

Page 213: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

}

Fehlermeldungen anzeigen

Die Validierungsfehler werden in die Sitzung geflasht und sind auch in der Variablen $errors verfügbar, die automatisch für alle Ansichten freigegeben wird.

Beispiel für die Anzeige der Fehler in einer Blade-Ansicht:

@if (count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif

Benutzerdefinierte Validierungsregeln

Wenn Sie eine benutzerdefinierte Validierungsregel erstellen möchten, können Sie dies beispielsweise in der boot Methode eines Service Providers über die Validator-Fassade tun.

<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Validator; class AppServiceProvider extends ServiceProvider { public function boot() { Validator::extend('starts_with', function($attribute, $value, $parameters, $validator) { return \Illuminate\Support\Str::startsWith($value, $parameters[0]); }); Validator::replacer('starts_with', function($message, $attribute, $rule, $parameters) { return str_replace(':needle', $parameters[0], $message); }); } }

Die extend Methode nimmt eine Zeichenfolge, die der Name der Regel ist, und eine Funktion, der wiederum der Name des Attributs, der zu überprüfende Wert, ein Array der Regelparameter und die Validierungsinstanz übergeben werden die Validierung ist bestanden. In diesem Beispiel überprüfen wir, ob die Wertzeichenfolge mit einer bestimmten Teilzeichenfolge beginnt.

Die Fehlermeldung für diese benutzerdefinierte Regel kann wie üblich in der Datei

https://riptutorial.com/de/home 197

Page 214: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

/resources/lang/[lang]/validation.php werden und Platzhalter enthalten, z. B. für Parameterwerte:

'starts_with' => 'The :attribute must start with :needle.'

Die replacer nimmt eine Zeichenfolge an, die den Namen der Regel darstellt, und eine Funktion, der (vor dem Ersetzen) die ursprüngliche Nachricht übergeben wird, der Name des Attributs, der Name der Regel und ein Array der Regelparameter und sollte die Nachricht nach dem Ersetzen der Platzhalter nach Bedarf zurückgeben.

Verwenden Sie diese Regel wie jede andere:

$this->validate($request, [ 'phone_number' => 'required|starts_with:+' ]);

Validierung online lesen: https://riptutorial.com/de/laravel/topic/1310/validierung

https://riptutorial.com/de/home 198

Page 215: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 62: Veranstaltungen und Zuhörer

Examples

Verwenden von Ereignissen und Listenern zum Senden von E-Mails an einen neuen registrierten Benutzer

Die Ereignisse von Laravel ermöglichen die Implementierung des Observer-Musters. Dies kann verwendet werden, um eine Begrüßungs-E-Mail an einen Benutzer zu senden, wenn er sich in Ihrer Anwendung registriert.

Neue Ereignisse und Listener können mit dem handwerklichen Befehlszeilenprogramm generiert werden, nachdem das Ereignis und der jeweilige Listener in App\Providers\EventServiceProvider Klasse App\Providers\EventServiceProvider .

protected $listen = [ 'App\Events\NewUserRegistered' => [ 'App\Listeners\SendWelcomeEmail', ], ];

Alternative Notation:

protected $listen = [ \App\Events\NewUserRegistered::class => [ \App\Listeners\SendWelcomeEmail::class, ], ];

php artisan generate:event nun php artisan generate:event . Dieser Befehl generiert alle entsprechenden Ereignisse und Listener, die oben in den Verzeichnissen App\Events und App\Listeners sind.

Wir können mehrere Zuhörer für ein einzelnes Ereignis haben

protected $listen = [ 'Event' => [ 'Listner1', 'Listener2' ], ];

NewUserRegistered ist nur eine Wrapper-Klasse für das neu registrierte Benutzermodell:

class NewUserRegistered extends Event { use SerializesModels; public $user;

https://riptutorial.com/de/home 199

Page 216: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

/** * Create a new event instance. * * @return void */ public function __construct(User $user) { $this->user = $user; } }

Dieses Event wird vom SendWelcomeEmail Listener verarbeitet:

class SendWelcomeEmail { /** * Handle the event. * * @param NewUserRegistered $event */ public function handle(NewUserRegistered $event) { //send the welcome email to the user $user = $event->user; Mail::send('emails.welcome', ['user' => $user], function ($message) use ($user) { $message->from('[email protected]', 'John Doe'); $message->subject('Welcome aboard '.$user->name.'!'); $message->to($user->email); }); } }

Der letzte Schritt ist das Aufrufen / Auslösen des Ereignisses, wenn sich ein neuer Benutzer registriert. Dies kann in der Steuerung, im Befehl oder im Dienst erfolgen, wo immer Sie die Benutzerregistrierungslogik implementieren:

event(new NewUserRegistered($user));

Veranstaltungen und Zuhörer online lesen: https://riptutorial.com/de/laravel/topic/4687/veranstaltungen-und-zuhorer

https://riptutorial.com/de/home 200

Page 217: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 63: Verwenden Sie Feldnamen in Eloquent

Verwenden Sie Feldnamen in Eloquent online lesen: https://riptutorial.com/de/laravel/topic/7927/verwenden-sie-feldnamen-in-eloquent

https://riptutorial.com/de/home 201

Page 218: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 64: Verzeichnisaufbau

Examples

Ändern Sie das Standard-App-Verzeichnis

Es gibt Anwendungsfälle, in denen Sie Ihr App-Verzeichnis möglicherweise in etwas anderes umbenennen möchten. In Laravel4 können Sie einfach einen Konfigurationseintrag ändern. Hier ist eine Möglichkeit, dies in Laravel5 zu tun.

In diesem Beispiel wird das app Verzeichnis in src .

Anwendungsklasse überschreiben

Der Verzeichnisname app ist in der Kernanwendungsklasse fest codiert und muss daher überschrieben werden. Erstellen Sie eine neue Datei Application.php . Ich ziehe es vor, meine im src Verzeichnis zu src (das Verzeichnis, mit dem wir die App ersetzen werden), aber Sie können sie an anderer Stelle ablegen.

So sollte die überschriebene Klasse aussehen. Wenn Sie einen anderen Namen wünschen, ändern Sie einfach den String src in einen anderen Namen.

namespace App; class Application extends \Illuminate\Foundation\Application { /** * @inheritdoc */ public function path($path = '') { return $this->basePath . DIRECTORY_SEPARATOR . 'src' . ($path ? DIRECTORY_SEPARATOR . $path : $path); } }

Speicher die Datei. Damit sind wir fertig.

Die neue Klasse aufrufen

Öffnen Sie bootstrap/app.php und bootstrap/app.php

$app = new Illuminate\Foundation\Application( realpath(__DIR__.'/../') );

Wir werden es damit ersetzen

https://riptutorial.com/de/home 202

Page 219: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

$app = new App\Application( realpath(__DIR__.'/../') );

Komponist

Öffnen Sie Ihre composer.json Datei und ändern Sie das automatische Laden an Ihren neuen Speicherort

"psr-4": { "App\\": "src/" }

In der Befehlszeile sollten Sie schließlich composer dump-autoload ausführen, und Ihre App sollte über das src Verzeichnis src .

Ändern Sie das Controllerverzeichnis

Wenn wir das Controllers ändern wollen, brauchen wir:

Verschieben und / oder benennen Sie das Standard- Controllers Verzeichnis um, wo wir es möchten. Zum Beispiel von app/Http/Controllers zu app/Controllers

1.

Aktualisieren Sie alle Namespaces der Dateien im Ordner " Controllers ", sodass sie sich an den neuen Pfad halten und den PSR-4-spezifischen Wert beachten.

2.

Ändern Sie den Namespace, der auf die Datei routes.php angewendet wird, indem Sie app\Providers\RouteServiceProvider.php und ändern Sie dies:

3.

protected $namespace = 'App\Http\Controllers';

zu diesem:

protected $namespace = 'App\Controllers';

Verzeichnisaufbau online lesen: https://riptutorial.com/de/laravel/topic/3153/verzeichnisaufbau

https://riptutorial.com/de/home 203

Page 220: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Kapitel 65: Warteschlangen

Einführung

Mithilfe von Warteschlangen kann Ihre Anwendung Zeitaufträge reservieren, die zeitaufwändig für die Verarbeitung durch einen Hintergrundprozess sind.

Examples

Anwendungsfälle

Wenn Sie beispielsweise eine E-Mail an einen Kunden senden, nachdem Sie eine Aufgabe gestartet haben, leiten Sie den Benutzer sofort auf die nächste Seite um, während Sie die E-Mail in die Warteschlange stellen, um sie im Hintergrund zu senden. Dies beschleunigt die Ladezeit für die nächste Seite, da das Senden einer E-Mail manchmal mehrere Sekunden oder länger dauern kann.

Ein anderes Beispiel wäre die Aktualisierung eines Lagersystems, nachdem ein Kunde mit seiner Bestellung ausgecheckt hat. Anstatt auf den Abschluss der API-Aufrufe zu warten, was einige Sekunden dauern kann, können Sie den Benutzer sofort zur Seite "Checkout-Erfolg" umleiten, während die API-Aufrufe im Hintergrund in die Warteschlange gestellt werden.

Warteschlangentreiberkonfiguration

Jeder Warteschlangentreiber von Laravel wird über die Datei config/queue.php konfiguriert. Ein Warteschlangentreiber ist der Handler, mit dem verwaltet wird, wie ein Auftrag in der Warteschlange ausgeführt wird, ob die Aufträge erfolgreich waren oder fehlgeschlagen sind, und der Auftrag wird erneut versucht, sofern dies konfiguriert ist.

Laravel unterstützt standardmäßig die folgenden Warteschlangentreiber:

sync

Sync oder synchron ist der Standard-Warteschlangentreiber, der einen Job in der Warteschlange in Ihrem vorhandenen Prozess ausführt. Wenn dieser Treiber aktiviert ist, haben Sie praktisch keine Warteschlange, da der Job in der Warteschlange sofort ausgeführt wird. Dies ist für lokale oder Testzwecke hilfreich, wird jedoch offensichtlich nicht für die Produktion empfohlen, da dadurch der Leistungsvorteil beim Einrichten der Warteschlange entfällt.

database

Dieser Treiber speichert Aufträge in der Warteschlange in der Datenbank. Bevor Sie diesen Treiber aktivieren, müssen Sie Datenbanktabellen erstellen, um Ihre in der Warteschlange befindlichen und fehlgeschlagenen Jobs zu speichern:

https://riptutorial.com/de/home 204

Page 221: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

php artisan queue:table php artisan migrate

sqs

Dieser Warteschlangentreiber verwendet den Simple Queue Service von Amazon zum Verwalten von Jobs in der Warteschlange. Bevor Sie diesen Job aktivieren, müssen Sie das folgende Composer-Paket installieren: aws/aws-sdk-php ~3.0

Beachten Sie auch, dass Amazon SQS bei einer Verzögerung von Warteschlangenjobs nur eine maximale Verzögerung von 15 Minuten unterstützt.

iron

Diese Warteschlangentreiber verwenden Iron zum Verwalten von Jobs in der Warteschlange.

redis

Dieser Warteschlangentreiber verwendet eine Instanz von Redis zum Verwalten von Jobs in der Warteschlange. Bevor Sie diesen Warteschlangentreiber verwenden, müssen Sie eine Kopie von Redis konfigurieren und die folgende Abhängigkeit vom predis/predis ~1.0 installieren: predis/predis ~1.0

beanstalkd

Dieser Warteschlangentreiber verwendet eine Instanz von Beanstalk zum Verwalten von Jobs in der Warteschlange. Bevor Sie diesen Warteschlangentreiber verwenden, müssen Sie eine Kopie von Beanstalk konfigurieren und die folgende Composer-Abhängigkeit installieren: pda/pheanstalk ~3.0

null

Durch die Angabe von null als Warteschlangentreiber werden alle Aufträge in der Warteschlange gelöscht.

Warteschlangen online lesen: https://riptutorial.com/de/laravel/topic/2651/warteschlangen

https://riptutorial.com/de/home 205

Page 222: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Credits

S. No

Kapitel Contributors

1 Erste Schritte mit Laravel

alepeino, Alphonsus, boroboris, Colin Herzog, Community, Ed Rands, Evgeniy Maynagashev, Gaurav, Imam Assidiqqi, James, Ketan Akbari, Kovah, Lance Pioch, Marek Skiba, Martin Bean, Misa Lazovic, nyedidikeke, Oliver Adria, Prakash, rap-2-h, Ru Chern Chong, SeinopSys, Tatranskymedved, Tim

2Ändern Sie das Standardroutingverhalten in Laravel 5.2.31 +

Frank Provost

3 Anfragen Ian, Jerodev, RamenChef, Rubens Mariuzzo

4 Aufgabenplanung Jonathon

5 AussaatA. Raza, Alphonsus, Ian, Imam Assidiqqi, Kyslik, SupFrost, whoan

6 Authentifizierung Aykut CAN, Imam Assidiqqi

7Benennen von Dateien beim Hochladen mit Laravel unter Windows

Donkarnash, RamenChef

8Benutzerdefinierte Helferfunktion

Ian, Luceos, rap-2-h, Raunak Gupta

9 Beobachter matiaslauriti, Szenis

10Berechtigungen für die Speicherung

A. Raza

aimme, alepeino, Alessandro Bassi, Alex Harris, Alfa, Alphonsus, andretzermias, andrewtweber, Andrey Lutskevich, aynber, Buckwheat, Casper Spruit, Dancia, Dipesh Poudel, Ian, Imam Assidiqqi, James, James, jedrzej.kurylo, John Slegers, Josh Rumbut, Kaspars, Ketan Akbari, KuKeC, littleswany, Lykegenes, Maantje, Mahmood, Marco Aurélio Deleu, marcus.ramsden, Marek Skiba, Martin Bean, matiaslauriti, MM2, Nicklas Kevin Frank, Niklas Modess, Nyan Lynn Htut, patricus, Pete Houston, Phroggyy, Prisoner Raju, RamenChef, rap-2-h, Rubens Mariuzzo,

11 Beredt

https://riptutorial.com/de/home 206

Page 223: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

Sagar Naliyapara, Samsquanch, Sergio Guillen Mantilla, Tim, tkausl, whoan, Yasin Patel

12 Blade-Vorlagen

A. Raza, agleis, Akshay Khale, alepeino, Alessandro Bassi, Benubird, cbaconnier, Christophvh, Imam Assidiqqi, matiaslauriti, Nauman Zafar, rap-2-h, Safoor Safdar, Tosho Trajanov, yogesh

13 Controller Ru Chern Chong

14 Cron-Grundlagen A. Raza

15CustomException-Klasse in Laravel

ashish bansal

16Dateisystem / Cloud-Speicher

Imam Assidiqqi, Nitish Kumar, Paulo Laxamana

17 DatenbankA. Raza, adam, caoglish, Ian, Iftikhar uddin, Imam Assidiqqi, liamja, Panagiotis Koursaris, RamenChef, Rubens Mariuzzo, Sanzeeb Aryal, Vucko

18 Datenbank SeedingAchraf Khouadja, Andrew Nolan, Dan Johnson, Isma, Kyslik, Marco Aurélio Deleu

19 DatenbankmigrationenChris, Chris White, Hovsep, hschin, Iftikhar uddin, Imam Assidiqqi, Kaspars, liamja, littleswany, mnoronha, Nauman Zafar, Panagiotis Koursaris, Paulo Freitas, Vucko

20 Dienstleistungen A. Raza, El_Matella

21Domainübergreifende Anfrage

Imam Assidiqqi, Suraj

22 Einführung in Laravel-5.2A. Raza, ashish bansal, Community, Edward Palen, Ivanka Todorova, Shubhamoy

23 Einführung in Laravel-5.3 Ian

24Eloquent: Accessors & Mutators

Diego Souza, Kyslik

25 Eloquent: BeziehungAdvaith, aimme, Alex Harris, Alphonsus, bhill77, Imam Assidiqqi, Ketan Akbari, Phroggyy, rap-2-h, Ru Chern Chong, Zulfiqar Tariq

26 Eloquent: Modell

Aeolingamenfel, alepeino, Alex Harris, Imam Assidiqqi, John Slegers, Kaspars, littleswany, Marco Aurélio Deleu, marcus.ramsden, Marek Skiba, matiaslauriti, Nicklas Kevin Frank, Samsquanch, Tim

https://riptutorial.com/de/home 207

Page 224: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

27Entfernen Sie public von URL in Laravel

A. Raza, Rana Ghosh, ultrasamad

28Erste Schritte mit Laravel-5.3

A. Raza, Advaith, Community, davejal, Deathstorm, Manish, Matthew Beckman, Robin Dirksen, Shital Jachak

29 Fehlerbehandlung Isma, Kyslik, RamenChef, Rubens Mariuzzo

30Formularanforderung (en)

Bookeater, Ian, John Roca, Kyslik, RamenChef

31 Genehmigung Daniel Verem

32 HandwerkerAlessandro Bassi, Gaurav, Harshal Limaye, Himanshu Raval, Imam Assidiqqi, Kaspars, Laurel, Rubens Mariuzzo, Safoor Safdar, Sagar Naliyapara, SeinopSys

33Häufige Probleme und schnelle Korrekturen

Nauman Zafar

34 Helfer aimme

35 HTML und Form Builder alepeino, Casper Spruit, Himanshu Raval, Prakash

36 Installation

A. Raza, alepeino, Alphonsus, Black, boroboris, Gaurav, Imam Assidiqqi, James, Ketan Akbari, Lance Pioch, Marek Skiba, Martin Bean, nyedidikeke, PaladiN, Prakash, rap-2-h, Ru Chern Chong, Sagar Naliyapara, SeinopSys, Tim

37 InstallationsanleitungAdvaith, Amarnasan, aynber, Community, davejal, Dov Benyomin Sohacheski, Imam Assidiqqi, PaladiN, rap-2-h, Ru Chern Chong

38 KammerdienerDavid Lartey, Dov Benyomin Sohacheski, Imam Assidiqqi, Misa Lazovic, Ru Chern Chong, Shog9

39 Kassierer littleswany, RamenChef

40 Konstanten Mubashar Iqbal, Oscar David, Zakaria Acharki

41 Laravel Docker Dov Benyomin Sohacheski

42 Laravel-PaketeCasper Spruit, Imam Assidiqqi, Ketan Akbari, rap-2-h, Ru Chern Chong, Tosho Trajanov

43 Lumen-Rahmen maksbd19

44 Mail Yohanan Baruchel

45Makros in einer eloquenten Beziehung

Alex Casajuana, Vikash

https://riptutorial.com/de/home 208

Page 225: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

46Mehrere DB-Verbindungen in Laravel

4444, A. Raza, Rana Ghosh

47 Middleware Alex Harris, Kaspars, Kyslik, Moppo, Pistachio

48 Nützliche Links Jakub Kratina

49 Prominente Jonathon, Marco Aurélio Deleu

50 Richtlinien Tosho Trajanov

51 Routenmodellbindung A. Raza, GiuServ, Vikash

52 RoutingA. Raza, alepeino, Alessandro Bassi, Alex Juchem, beznez, Dwight, Ilker Mutlu, Imam Assidiqqi, jedrzej.kurylo, Kyslik, Milan Maharjan, Rubens Mariuzzo, SeinopSys, Vucko

53 Sammlungen

A. Raza, Alessandro Bassi, Alex Harris, bhill77, caoglish, Dummy Code, Gras Double, Ian, Imam Assidiqqi, Josh Rumbut, Karim Geiger, matiaslauriti, Nicklas Kevin Frank, Ozzy, rap-2-h, simonhamp, Vucko

54 Seitennummerierung Himanshu Raval, Iftikhar uddin

55Sparkpost-Integration mit Laravel 5.4

Alvin Chettiar

56Stellen Sie die Laravel 5-App auf Shared Hosting unter Linux Server bereit

Donkarnash, Gayan, Imam Assidiqqi, Kyslik, PassionInfinite, Pete Houston, rap-2-h, Ru Chern Chong, Stojan Kukrika, ultrasamad

57 TestenAlessandro Bassi, Brayniverse, caoglish, Julian Minde, Kyslik, rap-2-h, Sven

58Token Mismatch Error in AJAX

Pankaj Makwana

59 Validierung

A. Raza, alepeino, Alessandro Bassi, Alex Harris, Andrew Nolan, happyhardik, Himanshu Raval, Ian, Iftikhar uddin, John Slegers, Marco Aurélio Deleu, matiaslauriti, rap-2-h, Rubens Mariuzzo, Safoor Safdar, Sagar Naliyapara, Stephen Leppik, sun, Vucko

60Veranstaltungen und Zuhörer

Bharat Geleda, matiaslauriti, Nauman Zafar

61Verwenden Sie Feldnamen in Eloquent

MM2

62 Verzeichnisaufbau Kaspars, Moppo, RamenChef

https://riptutorial.com/de/home 209

Page 226: Laravel - riptutorial.com · Inhaltsverzeichnis Über 1 Kapitel 1: Erste Schritte mit Laravel 2 Bemerkungen 2 Laravel StackOverflow Slack Community 2 Vorgestelltes Tutorial 2 Beitragsrichtlinien

63 Warteschlangen Alessandro Bassi, Kyslik

https://riptutorial.com/de/home 210