|
|
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. |