Einleitung Laravel Custom Helper
Obwohl Laravel schon toll ist, kann man mit Custom Helper, Laravel noch einen Schritt weiter nach vorne bringen. Custom Helper sind kleine Methoden, die immer wieder in der ganzen Anwendung auftauchen. Und da wir uns ja dem DRY (Dont Repeat Yourself) verschrieben haben, nutzen wir diese kleinen Helfer um Code nicht unnötig zu duplizieren. Die Anregung dazu habe ich von laravel.io.
Die Vorgehensweise erkläre ich hier anhand einer Methode zum Transformieren eines Strings in einen Slug. Zum Beispiel um einen String in eine lesbare Url umzuwandeln.
Facade
Als nächstes kommt die Datei für die Facade dran /app/Facades/CommonHelperFacade.php
<?php
namespace App\Facades;
class CommonHelperFacade
{
public static function slugMe($value)
{
return str_slug($value);
}
}
Service Provider
Den Custom Helper registriere ich jetzt über einen Service Provider in /app/Providers/HelperServiceProvider.php
public function register() {
$this->app->singleton('common', function ($app) {
return new CommonHelper($app);
});
}
Den Service Provider registriere ich jetzt in der /config/app.php im Abschnitt providers und den Helper im Abschnitt aliases
...
'providers' => [
...
App\Providers\HelperServiceProvider::class,
...
],
'aliases' => [
...
'Common' => App\Facades\CommonHelperFacade::class,
...
],
...
Helper Class benutzen
In der View benutze ich den Helper dann über die Facade mit
{{ Common::slugMe('das ist ein einfacher test') }}
Als Ausgabe in der View sollte das-ist-ein-einfacher-test herauskommen. Das ist in der Tat wirklich ein sehr einfacher Aufruf. Aber hier geht es auch nur darum aufzuzeigen was damit möglich ist.
Fazit
Ich hoffe dir mit diesem Beitrag weitergeholfen zu haben. Falls das der Fall ist, dann würde ich mich sehr über einen Kommentar freuen.
Geht es noch einfacher? Dann bin ich für jeden Tipp zu haben. Danke!
Sehr schöne Lösung, sogar PSR-2 kompatibel, im Gegensatz zu meiner Lösung, einfach eine helpers.php anzulegen und in der composer.json unter autoload.files anzugeben *g*
Grüße aus dem Pott!
Ist die Anleitung auch für Version 5.6 noch gültig? Weil ich bekomme diesen Fehler:
Class ‚Common‘ not found (View: /srv/http/xxx/resources/views/includes/header.blade.php)
Vielen Dank!
Habe es jetzt doch mit Laravel 5.6 geschafft. Hatte wohl irgendwo eine Zeichendreher drinnen.
Vielen Dank noch mal!