Comment créer une fonction Helper dans Laravel?

Je souhaite créer des fonctions Helpers pour éviter de répéter du code entre les vues dans Laravel. Par exemple :

view.custom.php

<p>Display text: {{ displayText($text) }}</p>

Il s’agit essentiellement de fonctions d’affichage de texte. Comment dois-je définir les fonctions Helpers disponibles globalement comme displayText() ?

Créez un fichier helpers.php dans le dossier de votre application et chargez-le avec le composer :

"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/helpers.php" // <---- AJOUTER LE FICHIER HELPER
    ]
},

Après avoir ajouté cela à votre fichier composer.json, exécutez la commande suivante :

$ composer dump-autoload

Si vous n’aimez pas garder votre fichier helpers.php dans votre répertoire app (parce que ce n’est pas un fichier de classe PSR-4 namespaced), vous pouvez faire ce que le site laravel.com fait : stocker le helpers.php dans le répertoire bootstrap. N’oubliez pas de le définir dans votre fichier composer.json :

"files": [
    "bootstrap/helpers.php"
]

Si vous utiliser Laravel 5 suivez les étapes suivantes:

Étape 1 : Créez votre fichier Helpers (ou autre classe personnalisée) et donnez-lui un namespace correspondant. Écrivez votre classe et votre méthode :

<?php // Code à l'intérieur de app\Helpers\Helper.php

namespace App\Helpers;

class Helper
{
    public static function displayText(string $string)
    {
        return strtolower($string);
    }
}

Étape 2 : Créez un alias :

<?php // Code à l'intérieur de config/app.php

    'aliases' => [
     ...
        'Helper' => App\Helpers\Helper::class,
     ...

Étape 3 : Exécuter composer dump-autoload dans la racine du projet

Étape 4 : Utilisez-le dans votre template Blade :

<!-- Code à l'intérieur de resources/views/template.blade.php -->

{!! Helper::displayText('autoloading...') !!}

Étape 5 : Utilisez cette classe n’importe où dans votre application Laravel :

<?php // Code à l'intérieur de app/Http/Controllers/MyController.php

namespace App\Http\Controllers;

use Helper;

class MyController extends Controller
{

    public function __construct()
    {
        Helper::displayText('Classe Helper dans le contrôleur!!');
    }
    ...