aria created page: einfuhrung in laravel authored by Aria Givi's avatar Aria Givi
Die MetaGer-Suchmaschine benutzt das PHP-Framework Laravel, welches auf dem MVC-Pattern basiert. Für weitere Informationen zum Framework siehe https://laravel.com/docs/5.4/
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.
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.
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
Variablen von der Methode weitergereicht werden.
Im Template ist die Zeile
<h3>Ergebnisse für die Suche "{{$q}}":</h3>
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,
dass diese an der richtigen Stelle eingesetzt wird. Die Rückgabe der Methode sieht dabei so aus:
return view('zitatsuche')
->with('title', 'Zitatsuche MetaGer')
->with('navbarFocus', 'dienste')
->with('results', $validResults)
->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.
Mehr Informationen zu Blade-Templates gibt es [hier] (https://laravel.com/docs/5.4/blade).
Bei weiteren Fragen einfach eine E-Mail an aria@suma-ev.de senden.