Update einfuhrung in laravel authored by Aria Givi's avatar Aria Givi
......@@ -2,21 +2,24 @@ Die MetaGer-Suchmaschine benutzt das PHP-Framework Laravel, welches auf dem MVC-
Zu Beginn sollten die anderen Artikel des Wikis vollständig durchgelesen werden, sowie die [Schritte zum Aufsetzen einer MetaGer-Entwicklungsumgebung] (https://gitlab.metager3.de/open-source/MetaGer/wikis/aufsetzen-einer-metager-entwicklungsumgebung) vollständig ausgeführt werden.
Wie im wiki schon steht, bietet die Datei '/app/routes/web.php' einen guten Einstiegspunkt, um nachzuvollziehen, was beim Aufruf einer bestimmten URL passiert. An dieser Stelle kümmert sich das Laravel-Framework darum, dass HTTP-Anfragen an entsprechende PHP-Methoden in den Controller-Klassen unter app/http/controllers weitergeleitet werden.
Wie im wiki schon steht, bietet die Datei `/app/routes/web.php` einen guten Einstiegspunkt, um nachzuvollziehen, was beim Aufruf einer bestimmten URL passiert. An dieser Stelle kümmert sich das Laravel-Framework darum, dass HTTP-Anfragen an entsprechende PHP-Methoden in den Controller-Klassen unter app/http/controllers weitergeleitet werden.
Diese Controller-Klassen müssen Unterklassen des Laravel-Controllers sein.
Hier wird die Anfragen dann bearbeitet und je nach Aufgabe des Controllers beispielsweise die nächste HTML-Seite generiert, auf welche der Benutzer weitergeleitet werden soll.
Einträge in der 'web.php' sehen beispielsweise so aus:
Route::get('zitat-suche', 'ZitatController@zitatSuche');
Gibt ein Nutzer nun die URL http://metager.de/zitat-suche in die Adressleiste seines Browsers ein, so wird eine HTTP GET Anfrage an die MetaGer-Server versendet, wo diese dann an die Methode 'zitatSuche' in der Klasse 'ZitatController' weitergeleitet wird.
## Beispiel
Gibt ein Nutzer nun die URL http://metager.de/zitat-suche in die Adressleiste seines Browsers ein, so wird eine HTTP GET Anfrage an die MetaGer-Server versendet, wo diese dann an die Methode `zitatSuche` in der Klasse `ZitatController` weitergeleitet wird.
Diese überprüft, ob bereits vom Benutzer eine Zitatsuchanfrage gesendet worden ist. Falls nein, bekommt der Nutzer die Zitatsuchmaske angezeigt.
Andernfalls werden mit der eingegebenen Suchphrase nach entsprechenden Ergebnissen gesucht und eine HTML-Seite mit den Suchergebnissen generiert und zurückgegeben.
Dafür werden die vom Laravel-Framework stammenden Blade-Templates verwendet. Blade-Templates sind Dateien, welche zu einem großen Teil aus Standard-HTML bestehen und darüber hinaus die Möglichkeit bieten, mit PHP-Anweisungen Informationen dynamisch darzustellen.
Im obigen Beispiel vervollständigt die Methode 'zitatSuche' das Blade-Template '/resources/views/zitatsuche.blade.php' zu einer HTML-Datei, indem die einzusetzenden
Im obigen Beispiel vervollständigt die Methode `zitatSuche` das Blade-Template `/resources/views/zitatsuche.blade.php` zu einer HTML-Datei, indem die einzusetzenden
Variablen von der Methode weitergereicht werden.
Im Template ist die Zeile
......@@ -25,7 +28,7 @@ Im Template ist die Zeile
vorhanden. In den geschweiften Klammern befindet sich der PHP-Code, welcher ausgeführt wird, bevor der Nutzer die Seite zu Gesicht bekommt. Außerdem sorgen die geschweiften Klammern dafür, dass der Inhalt der Klammern vorher durch die PHP-eigene htmlspecialchars Funktion gesendet wird, um keine Sicherheitslücke für Angriffe zu bieten.
Die Rückgabe der 'zitatSuche'-Methode des 'ZitatController' würde also in diesem Fall die Variable $q (die Suchanfrage) an das Template weitergeben. Laravel kümmert sich dann darum,
Die Rückgabe der `zitatSuche`-Methode des `ZitatController` würde also in diesem Fall die Variable `$q` (die Suchanfrage) an das Template weitergeben. Laravel kümmert sich dann darum,
dass diese an der richtigen Stelle eingesetzt wird. Die Rückgabe der Methode sieht dabei so aus:
return view('zitatsuche')
......@@ -35,7 +38,20 @@ dass diese an der richtigen Stelle eingesetzt wird. Die Rückgabe der Methode si
->with('q', $request->input('q', ''));
Insbesondere die letzte Zeile ist für dieses Beispiel interessant. Dabei wird an view('zitatsuche') (dem Template) mit der Anweisung
->with('q', $request->input('q', '') die Suchanfrage aus der vorherigen HTTP-Anfrage ausgelesen und in die HTML-Datei eingefügt.
`->with('q', $request->input('q', '')` die Suchanfrage aus der vorherigen HTTP-Anfrage ausgelesen und in die HTML-Datei eingefügt.
## Beispiel 2
Eintrag in der `web.php`
Route::get('kontakt', function () {
return view('kontakt.kontakt')
->with('title', trans('titles.kontakt'))
->with('navbarFocus', 'kontakt');
});
Im Gegensatz zum ersten Beispiel wird hier keine Controller-Klasse angegeben. Stattdessen wird direkt das Blade-Template
`/resources/views/kontakt/kontakt.blade.php` zurückgegeben. Laravel ermöglicht die Verwaltung von mehreren Spracheinstellungen, sodass `trans('titles.kontakt')` je nach Sprachauswahl den richtigen String in das Template einfügt.
Mehr Informationen zu Blade-Templates gibt es [hier] (https://laravel.com/docs/5.4/blade).
......
......