... | @@ -2,21 +2,24 @@ Die MetaGer-Suchmaschine benutzt das PHP-Framework Laravel, welches auf dem MVC- |
... | @@ -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.
|
|
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.
|
|
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:
|
|
Einträge in der 'web.php' sehen beispielsweise so aus:
|
|
|
|
|
|
Route::get('zitat-suche', 'ZitatController@zitatSuche');
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
Variablen von der Methode weitergereicht werden.
|
|
|
|
|
|
Im Template ist die Zeile
|
|
Im Template ist die Zeile
|
... | @@ -25,7 +28,7 @@ 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.
|
|
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:
|
|
dass diese an der richtigen Stelle eingesetzt wird. Die Rückgabe der Methode sieht dabei so aus:
|
|
|
|
|
|
return view('zitatsuche')
|
|
return view('zitatsuche')
|
... | @@ -35,7 +38,20 @@ dass diese an der richtigen Stelle eingesetzt wird. Die Rückgabe der Methode si |
... | @@ -35,7 +38,20 @@ dass diese an der richtigen Stelle eingesetzt wird. Die Rückgabe der Methode si |
|
->with('q', $request->input('q', ''));
|
|
->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
|
|
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).
|
|
Mehr Informationen zu Blade-Templates gibt es [hier] (https://laravel.com/docs/5.4/blade).
|
|
|
|
|
... | | ... | |