Hey,
ich habe mir zum Glück recht früh angeeignet mir kleine URL-Helper zu erstellen, die in erster Linie z.B. in Templates sauberer aussehen und einfach zu warten sind. Doch fangen wir klein an:
Was sind helper?
Helper sind Funktionen, welche regelmäßig verwendet werden und einem das Leben etwas erleichtern. Zusätzlich sind sie global verfügbar - egal ob im Template oder im Backend.
Wo finde ich die helper?
Laravel bringt von Haus aus eine Helper Datei mit, welche sich unter App\Helpers\general.php befindet. Zu einer besseren Übersicht empfehle ich jedoch lieber mehrere Dateien zu pflegen, statt alles in die general.php zu packen.
Wie füge ich helper hinzu?
- Füge eine weitere Datei unter App\Helpers\ hinzu. In meinem Beispiel nenne ich sie urlHelper.php
- Füge die urlHelper.php im Autoloader hinzu, damit sie global verfügbar ist:
- Offne dazu die composer.json im Rootverzeichnis
- Suche darauf das autload-Object und erweitere dort den Files-Array um den Eintrag App\Helpers\urlHelper.php (orientiere dich an der general.php)
- Gehe in die Konsole und führe folgendes Kommando aus: composer dump-autoload - dadurch wird der autoloader neu generiert und ab nun kannst du auf alle vorhanden Funktionen innerhalb der Datei zugreifen.
Nehmen wir nun als Beispiel ein Benutzerprofil. In der Web-Route haben wir folgendes angegeben um ein Profil aufzurufen:
Die URL sähe live dann folgendermaßen aus:
https://example.com/user/1-florian-lauterbach
Wie sieht der Helper aus?
Natürlich kommt es darauf an wie Euer Design und die aktuelle Situation aussieht. In diesem Falle gehe ich davon aus, dass ein UserObject vorhanden ist:
Innerhalb der Funktion entnehmen wir die id des UserObjects und "sluggen" den Namen URL-freundlich um die komplette URL am Ende formatiert herauszugeben.
In einem Template (z.B. einer Benutzerliste) könnten wir dies nun so handhaben:
Damit erhalten wir eine Auflistung aller Nutzer, inklusive deren Namen und Profil-Url. Wenn ihr zukünftig also Eure URLs anpassen wollt, müsst ihr dies auf diese Art und Weise nur innerhalb der Routen-Dateien und innerhalb der Helper-Datei machen. Kein ätzendes Suchen und Ersetzen mehr!
Wie handhabt ihr die URL Generierung? Konnte ich Euch sogar vielleicht helfen - dann lasst es mich gerne wissen.