Sélectionner une page

Il y a de nombreuses solutions pour créer des helpers sous Laravel. Je vous propose donc une solution qui me convient. La première étape consiste à créer un fichier dans un nouveau dossier sous app/ Helpers/ BackendHelper.php. Dans mon exemple que vais écrire une fonction qui me génère une string en minuscule propre en enlevant les caractères accentués les plus probables pour moi. Je pourrai ensuite l’utiliser pour générer des urls.

namespace App\Helpers;

class BackendHelper
{
 public static function convertToUrl(string $string)
 {
    $unwanted_array = array( 'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 
      'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 
      'É'=>'E','Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 
      'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U','Ú'=>'U', 
      'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 
      'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c','è'=>'e', 'é'=>'e', 'ê'=>'e', 
      'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 
      'ó'=>'o', 'ô'=>'o', 'õ'=>'o','ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 
      'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y','G'=>'G', 'I'=>'I', 'S'=>'S', 'g'=>'g', 'i'=>'i', 
      's'=>'s', 'ü'=>'u','a'=>'a', 'A'=>'A', '?'=>'s', '?'=>'S', '?'=>'t', '?'=>'T' );
    
   $string = strtr( $string, $unwanted_array );
    return htmlentities(strtolower($string));
 }
}

J’ajoute ensuite un alias dans le fichier config/app.php

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

Maintenant que tout est en place, pour l’utiliser dans une vue avec blade ou en php j’utilise les lignes de commande suivante:

{!! BackendHelper::convertToUrl('Catégorie Électro-ménager') !!}

Une fois cela fais, il faut recharger les fichiers dans le cache a l’aide de la fonction suivante:

composer dump-autoload

Pour l’utiliser dans un contrôleur

use App\Helpers\BackendHelper;
...
public function newCat(Request $request){
   ...
   $new_cat->url_fr  = BackendHelper::convertToUrl($request->input('url_fr'));
   ...
}

Charger automatiquement des classes – AutoLoad

Si vous désirez que votre classe soit accessible depuis partour, voua avez aussi comme solution de l’ajouter à l’Autoload de Laravel. Pour ce faire il faut modifier le fichier composer.json présent à la racine de votre dossier et le modifier de la façon suivante:

"autoload": {
   "classmap": [
      "database"
   ],
   "files": [
      "app/Helpers/lessc.inc.php", //#### Classe à inclure
      "app/Helpers/geshi/geshi.php" //#### Classe à inclure
   ],

Maintenant si vous ne voulez pas avoir l’erreur Class not found vous devez exécuter la commande suivante: composer dump-autoload