Laravel ist ein modernes und sehr beliebtes PHP-Framework. Gängige Anforderungen, wie eine Benutzer Authentifizierung (Sign-In, Login, Reset Passwort) und Berechtigungen sind fixer Bestandteil des Frameworks.

Warum Laravel?

Laravel bietet, wie bereits eingangs erwähnt, fertige Module für alle gängigen Anforderungen, entsprechend können sich Entwickler schneller auf das Wesentliche stürzen: auf die Entwicklung der eigentlichen Applikation. Laravel ist sehr gut dokumentiert und bietet unter anderem auch Video-Tutorials für Beginner und Fortgeschrittene: https://laracasts.com/. Zudem wird z.B. auch die Integration von Bootstrap als CSS Framework und Vue.js als Javascript-Frontent-Framework vorbereitet und beschrieben.

Voraussetzungen

Kurz zusammengefasst, benötigt eine Entwicklungsumgebung neben einem Webserver mit PHP und z.B. MySQL als Datenbank, den Paketmanager composer für PHP-Pakete und für die Javascript-Sourcen den Paketmanager npm. Für das Setup wird ein Zugriff auf die Konsole des Webservers vorausgesetzt (meist SSH), die genauen Systemvoraussetzungen stehen auf der Herstellerseite: https://laravel.com/docs/master/installation.

Eine Entwicklungsumgebung kann auch unter Windows installiert werden: "Laragon" oder "Laravel Homestead", siehe: www.libe.net/index.php/laravel-homestead-windows-10

Installation

Wer alle Voraussetzungen für Laravel installiert hat, kann mittels 

laravel new Seite in der Konsole ein neues Projekt anlegen.

Alternativ kann Laravel ohne Helper mittels composer installiert werden: 

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

 

Composer lädt alle Abhängigkeiten und installiert somit Laravel im Unterordner "blog".

Nach dem Wechseln in den Unterordner: 

cd blog  ,installiert der Befehl 

composer require laravel/ui --dev die notwendigen Frontent-Komponeneten, wie Bootstrap und Vue.js.

Die Installation der NPM-Pakete erfolgt mittels:

 

npm install und

npm run dev fügt die Javascript-Sourcen zusammen, siehe:  NPM Pakete - Laravel app.js und css 

 

Die Datenbank kann wie folgt angelegt werden: Laravel Datenbank

 

Model-View-Controller Design

Damit der Start in Laravel möglichst schnell klappt, habe ich die gängigen Aktionen: index, create, store, edit, update, show, destroy in einem Beispiel zusammengefasst. Das Beispiel kann Einträge erstellen, auflisten, anzeigen, bearbeiten und löschen.

 

Vorab aber etwas Theorie zur Funktionsweise von Laravel. Laravel folgt dem traditionellen Model-View-Controller Design:

Controller: Verarbeiten die Usereingaben und empfangen Daten mittels Verwendung von Models

Model: Lesen oder schreiben Werte von und zur Datenbank

Views Werden für die Anzeige der jeweiligen Seite verwendet

 

Um die URLs den bestimmten Controller-Aktionen zuzuweisen, startet der Aufruf über Routes.

 

Für eine bessere Vorstellung habe ich das konkrete Beispiel-Skript schematisch dargestellt.

Als Platzhalter für den Model-Namen habe ich "Myinput" verwendet. Der verwendete Name "Myinput" sollte als Datenbankeintrag oder ein Objekt verstanden werden. Das Model wird für das Ansprechen der Datenbank verwendet, der Model-Name repräsentiert die zu verwaltenden Objekte. Für das Erstellen einer Anwendung, um z.B. Autos zu verwalten, könnte anstelle von "Myinput" als Model der Name "Auto" verwendet werden, zum Verwalten von Büchern, z.B. "Buch".

Laravel verwendet an bestimmten Stellen ein "s" am Ende des Namens. Das "s" steht für die Mehrzahl: Wenn wir Laravel nicht explizit etwas anderes mitteilen, geht das Framework davon aus, dass die Datenbanktabelle für "Myinput", "myinputs" heißt.

Wird im Browser eine URL mit dem Model-Namen (/myinputs) aufgerufen, landet die Anfrage in der Datei publicroot\app\Http\routes.php. Die Routes-Datei könnte die Anfrage direkt verarbeiten, übersichtlicher wird es allerdings, wenn die Anfragen an einen Controller weitergegeben werden: 

Folgender Eintrag in der Datei routes.php erstellt automatisch URL-Pfade für einen zugehörigen Controller:

Route::resource('myinputs', 'MyinputController');

 

Der Befehl Route::resource erzeugt automatisch die folgenden Pfade:

 

Request Type Pfad Aktion Route Name
GET /myinputs index myinputs.index
GET /myinputs/create create myinputs.create
POST /myinputs store myinputs.store
GET /myinputs/{id} show myinputs.show
GET /myinputs/{id}/edit edit myinputs.edit
PUT/PATCH /myinputs/{id} update myinputs.update
DELETE /myinputs/{id} destroy myinputs.destroy

 

Route::resource steht automatisch für mehrere "Route::REQUEST"-Einträge, diese könnten auch einzeln eingetragen werden:  

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);

 

Beim Aufruf der URL: http://MyWebserver.com/myinputs, wird die entsprechende Funktion index in der Controllerdatei "MyModelController" aufgerufen. http://MyWebserver.com/myinputs/create wird an die Funktion create in der Controllerdatei "MyModelController" geleitet, usw.

 

Best Practices siehe https://github.com/alexeymezenin/laravel-best-practices/blob/master/README.md


andere Themen getagged mit #wie erstelle ich
Laravel Beispiel - Schritt für Schritt

Laravel Beispiel - Schritt für Schritt

CRUD (Create - Read - Update - Delete)

Wie in dem zuvor veröffentlichten Artikel "Übersicht Laravel Funktion" bereits angekündigt, habe ich für Laravel ein Praxis-Beispiel erstellt. Das Beispiel kann bestimmte Datenbankeinträge erstellen, anzeigen, bearbeiten und löschen.

Laravel Beispiel - Schritt für Schritt


Laravel Authentication und Authorization Beispiel

Laravel Authentication und Authorization Beispiel

Laravel ist für Benutzer-Anmeldungen bereits vorbereitet, das Aktivieren der Funktion erfolgt mit einem einfachen Befehl.

Laravel Authentication und Authorization Beispiel


Laravel Passport

Laravel Passport

Laravel oAuth2 Provider

Als Fortsetzung zum MyInput-Beispiel füge ich Laravel Passport hinzu.

Das Beispiel baut auf folgenden Artikeln auf:  Laravel Beispiel - Schritt für Schritt und Laravel - Authentication und Authorization Beispiel 

Laravel Passport


Laravel Queries anzeigen

Laravel Queries anzeigen

Laravel Queries anzeigen


Laravel Vue

Laravel Vue

Laravel Vue


Laravel Relationship

Laravel Relationship

Beispiel Beziehung von einzelnen Einträgen innerhalb eines Models(Tabelle)

Durch das Hinzufügen von "parent_id" kann innerhalb einer Tabelle eine Beziehung zu einem anderen Eintrag hergestellt werden.

Ein Eintrag kann also mehrere Child-Einträge haben, diese bekommen als parent_id die id des ursprünglichen Eintrags. Dadurch können verschachtelte Abhängigkeiten (nested) abgebildet werden. Ein Eintrag kann also abhängig von einem Parent sein und selbst der Parent für mehrere Child-Einträge sein.

Laravel Relationship


Laravel Websockets 443 über https - 443

Laravel Websockets 443 über https - 443

Mit Hilfe von WebSockets können Echtzeit-Webanwendungen umgesetzt werden. WebSockets ermöglichen dem Browser auf bestimmte Anforderungen vom Server zu warten, der Browser muss also nicht regelmäßig nach Updates vom Server fragen, er wird vom Server aktiv informiert. 

Laravel Websockets 443 über https - 443


Laravel API

Laravel API

Laravel API Routes

Laravel API


Laravel Google API Spreadsheet

Laravel Google API Spreadsheet

kurz notiert: Zugriff auf Google Spreadsheet von Laravel

Nachdem ich einige Zeit damit verbracht habe auf ein nicht öffentliches Google Spreadsheet zuzugreifen, hier ein paar Screenshots des Setup.

Laravel Google API Spreadsheet


Debugbar

Debugbar

Für das Optimieren von Datanbank-Zugriffen habe ich die Debugbar installiert, damit können die DB-Queries und Antwortzeiten im Browser angezeigt werden.

Debugbar


NPM Pakete - Laravel app.js und css

NPM Pakete - Laravel app.js und css

Hinzufügen von Javascript-Sourcen zu Laravel

NPM (Node Package Manager) dient als Paketmanager für JavaScript-Files, ähnlich Composer für PHP. Mittels NPM können also Javascript Pakete heruntergeladen und zusammengeführt werden. Für das Zusammenfügen mehrere NPM-Pakete zu einer JS-Datei wird Webpack verwendet, entsprechend können heruntergeladene Pakete in Webpack eingebunden und mittels npm run zusammengefügt werden.

NPM Pakete - Laravel app.js und css


Laravel update Bootstrap  v4

Laravel update Bootstrap v4

Ursprünglich hab ich in Laravel Bootstrap v3 verwendet. Um ohne Neuinstallation auf die Version 4 des beliebten Web-frameworks umzusteigen sind einige Anpassungen notwendig.

Laravel update Bootstrap v4


Laravel - Vue Router

Laravel - Vue Router

Mittels Vue-Router einen Teil der Webseite dynamisch mit Vue laden.

Vue Router ermöglicht es in SPA (Single Page Applications) mittels URL-Pfade direkt bestimmte Vue-Componenten zu laden. 

Laravel - Vue Router