Laravel 4 : chapitre 23 : Les helpers
Cette liste avait été établie avant documentation, je la laisse en essayant de la compléter au mieux…
La classe « HTML »
La méthode « entities »
Cette méthode utilise la méthode htmlentities avec l’option ENT_QUOTES avec l’encodage UTF-8 :
Route::get('/', function() { return HTML::entities('L\'enfant est <strong>gros</strong>'); });
Affiche :
L'enfant est <strong>gros</strong>
Avec ce code HTML :
L'enfant est <strong>gros</strong>
Notez que l’helper « e » fait exactement la même chose avec une syntaxe plus légère.
Méthode « decode »
C’est l’inverse de la précédente :
Route::get('/', function() { return HTML::decode('L'enfant est <strong>gros</strong>'); });
Qui donne :
L'enfant est <strong>gros</strong>
Avec le code HTML :
L'enfant est <strong>gros</strong>
Méthode « image »
Cette méthode permet de générer une balise <img> :
Route::get('/', function() { return HTML::image('img/bateau.jpg'); });
Qui génère :
<img src="http://localhost/laravel/public/img/bateau.jpg">
On dispose de deux autres paramètres, le premier pour l’attribut alt, le second pour un tableau avec tous les attributs que l’on veut :
Route::get('/', function() { return HTML::image('img/bateau.jpg', 'bateau', array('height' => 42, 'width' => 42)); });
Qui génère :
<img src="http://localhost/laravel/public/img/bateau.jpg" height="42" width="42" alt="bateau">
Méthode « link »
Cette méthode permet de générer une balise <a> :
Route::get('/', function() { return HTML::link('pages/page1.html'); });
Qui génère :
<a href="http://localhost/laravel/public/pages/page1.html">http://localhost/laravel/public/pages/page1.html</a>
On dispose de 3 autres paramètres, le premier pour le titre, le second pour un tableau avec tous les attributs que l’on veut, et le troisième pour passer en mode sécurisé :
Route::get('/', function() { return HTML::link('pages/page1.html', 'page1', array('target' => '_blank'), true ); });
Qui génère :
<a href="https://localhost/laravel/public/pages/page1.html" target="_blank">page1</a>
Méthode « secureLink »
C’est la même que la précédente mais le dernier paramètre n’existe plus et on est d’office en mode sécurisé.
Méthode « script »
Cette méthode génère une balise script :
Route::get('/', function() { return HTML::script('js/main.js'); });
Code généré :
<script src="http://localhost/laravel/public/js/main.js"></script>
Un deuxième paramètre permet de définir des attributs avec un tableau :
Route::get('/', function() { return HTML::script('js/main.js', array('charset' => 'UTF-8')); });
Résultat :
<script charset="UTF-8" src="http://localhost/laravel/public/js/main.js"></script>
Méthode « style »
Cette méthode permet de générer un lien vers une feuille de style :
Route::get('/', function() { return HTML::style('ccc/main.css'); });
Code généré :
<link media="all" type="text/css" rel="stylesheet" href="http://localhost/laravel/public/ccc/main.css">
Un deuxième paramètre permet de définir des attributs dans un tableau :
Route::get('/', function() { return HTML::style('ccc/main.css', array('disabled' => 'true')); });
Code généré :
<link disabled="true" media="all" type="text/css" rel="stylesheet" href="http://localhost/laravel/public/ccc/main.css">
Méthode « linkRoute »
Cette méthode permet de générer un lien vers une route :
Route::get('/', function() { return HTML::linkRoute('log'); }); Route::get('login', array('as' => 'log', function() { return View::make('hello'); }));
<a href="http://localhost/laravel/public/login">http://localhost/laravel/public/login</a>
On dispose de 3 autres paramètres : un pour le titre, un autre pour les paramètres, et un dernier pour les attributs :
Route::get('/', function() { return HTML::linkRoute('log', 'log', array('nom' => 'Dupont'), array('target' => '_blank')); }); Route::get('login', array('as' => 'log', function() { return View::make('hello'); }));
<a href="http://localhost/laravel/public/login?nom=Dupont" target="_blank">log</a>
Méthode « linkAction »
Cette méthode est calquée sur la précédente mais on pointe cette fois une action d’un contrôleur :
Route::get('/', function() { return HTML::linkAction('LivresController@create', 'create', array('nom' => 'Dupont'), array('target' => '_blank')); });
<a href="http://localhost/laravel/public/livres/create?nom=Dupont" target="_blank">create</a>
Méthode « ol »
Cette méthode permet de générer une liste ordonnée :
Route::get('/', function() { return HTML::ol(array('un', 'deux', 'trois')); });
<ol> <li>un</li> <li>deux</li> <li>trois</li> </ol>
Vous avez un second paramètre pour les attributs :
Route::get('/', function() { return HTML::ol(array('un', 'deux', 'trois'), array('class' => 'liste')); });
<ol class="liste"> <li>un</li> <li>deux</li> <li>trois</li> </ol>
Méthode « ul »
Cette méthode est calquée sur la précédente
Route::get('/', function() { return HTML::ul(array('un', 'deux', 'trois'), array('class' => 'liste')); });
<ul class="liste"> <li>un</li> <li>deux</li> <li>trois</li> </ul>
Les macros
Vous pouvez créer une macro quelconque :
HTML::macro('mon_div', function() { return "<div class='contain'>"; }); Route::get('/', function() { return HTML::mon_div(); });
<div class='contain'>
Les URL
Méthode « url »
La première méthode, la plus simple est url :
Route::get('/', function() { return url(); });
http://localhost/laravel/public
On peut transmettre un chemin en premier paramètre :
Route::get('/', function() { return url('test'); });
http://localhost/laravel/public/test
Le deuxième paramètre sert à passer des éléments pour l’URL :
Route::get('/', function() { return url('test', array('article', 'id')); });
http://localhost/laravel/public/test/article/id
Le troisième paramètre sert à passer en mode sécurisé :
Route::get('/', function() { return url('test', array(), true); });
https://localhost/laravel/public/test
Mais vous obtenez le même résultat plus simplement avec la méthode secure_url :
Route::get('/', function() { return secure_url('test'); });
Méthode « route »
La méthode route permet de générer une URL pour une route :
Route::get('/', function() { return route('log'); }); Route::get('login', array('as' => 'log', function() { return View::make('hello'); }));
http://localhost/laravel/public/login
Le deuxième paramètre permet d’ajouter des paramètres pour la route :
Route::get('/', function() { return route('log', array('nom' => 'Dupont')); });
http://localhost/laravel/public/login?nom=Dupont
Méthode « action »
Supposons que vous avez un contrôleur nommé LivresController et une action create, entrez ce code dans les routes :
Route::get('/', function() { return action('LivresController@create'); });
http://localhost/laravel/public/livres/create
Vous pouvez ajouter des paramètres :
Route::get('/', function() { return action('LivresController@create', array('nom' => 'Dupont', 'prenom' => 'Albert')); });
http://localhost/laravel/public/livres/create?nom=Dupont&prenom=Albert
Méthode « asset »
La méthode asset permet de générer une URL pour les assets, par exemple :
Route::get('/', function() { return asset('assets/css/mon_css.css'); });
Résultat :
http://localhost/laravel/public/assets/css/mon_css.css
Un deuxième paramètre, par défaut à null, permet de passer en protocole sécurisé :
Route::get('/', function() { return asset('assets/css/mon_css.css', true); });
Résultat :
https://localhost/laravel/public/assets/css/mon_css.css
Vous pouvez obtenir le même résultat avec la méthode secure_asset :
Route::get('/', function() { return secure_asset('assets/css/mon_css.css'); });
Les liens
Méthode « link_to »
La méthode link_to permet de créer un lien :
Route::get('/', function() { return link_to('test'); });
<a href="http://localhost/laravel/public/test">http://localhost/laravel/public/test</a>
Vous pouvez définir le titre avec le deuxième paramètre:
Route::get('/', function() { return link_to('test', 'titre'); });
<a href="http://localhost/laravel/public/test">titre</a>
Le troisième paramètre permet d’ajouter des attributs :
Route::get('/', function() { return link_to('test', 'titre', array('class' => 'deco')); });
<a href="http://localhost/laravel/public/test" class="deco">titre</a>
Le quatrième paramètre (normalement à null) permet de passer en mode sécurisé :
Route::get('/', function() { return link_to('test', 'titre', array('class' => 'deco'), true); });
<a href="https://localhost/laravel/public/test" class="deco">titre</a>
Méthode « link_to_route »
La méthode link_to_route permet de créer un lien vers une route nommée :
Route::get('/', function() { return link_to_route('log'); }); Route::get('login', array('as' => 'log', function() { return View::make('hello'); }));
<a href="http://localhost/laravel/public/login">http://localhost/laravel/public/login</a>
Vous pouvez définir le titre avec le deuxième paramètre:
Route::get('/', function() { return link_to_route('log', 'titre'); });
<a href=">http://localhost/laravel/public/login">titre</a>
Le troisième paramètre permet d’ajouter des attributs :
Route::get('/', function() { return link_to_route('log', 'titre', array('class' => 'deco')); });
<a href=">http://localhost/laravel/public/login" class="deco">titre</a>
Le quatrième paramètre (normalement à null) permet de passer en mode sécurisé :
Route::get('/', function() { return link_to_route('log', 'titre', array('class' => 'deco'), true); });
<a href=">https://localhost/laravel/public/login" class="deco">titre</a>
Méthode « link_to_action »
La méthode link_to_action permet de créer un lien vers une action d’un contrôleur :
Route::get('/', function() { return link_to_action('LivresController@create'); });
<a href="http://localhost/laravel/public/livres/create">http://localhost/laravel/public/livres/create</a>
Vous pouvez définir le titre avec le deuxième paramètre:
Route::get('/', function() { return link_to_action('LivresController@create', titre); });
<a href="http://localhost/laravel/public/livres/create">titre</a>
Le troisième paramètre permet d’ajouter des paramètres :
Route::get('/', function() { return link_to_action('LivresController@create', 'titre', array('nom' => 'Dupont')); });
<a href="http://localhost/laravel/public/livres/create?nom=Dupont">titre</a>
Le quatrième paramètre permet de passer des attributs :
Route::get('/', function() { return link_to_action('LivresController@create', 'titre', array(), array('class' => 'deco')); });
<a href="http://localhost/laravel/public/livres/create" class="deco">titre</a>
Les chaînes de caractères
Méthode « starts_with »
On peut savoir si une chaîne commence par une autre chaîne en utilisant la méthode starts_with :
Route::get('/', function() { return var_dump(starts_with('autoroute', 'au')); });
bool(true)
Le paramètre peut être un tableau :
Route::get('/', function() { return var_dump(starts_with('autoroute', array('au', 'uy'))); });
Dans ce cas il suffit que l’un des éléments corresponde pour obtenir true.
Méthode « ends_with »
Cette méthode est équivalente à la précédente mais cette fois on teste la présence d’un chaîne à la fin d’une autre :
Route::get('/', function() { return var_dump(ends_with('autoroute', 'ute')); });
Il est aussi possible de passer un tableau comme paramètre.
Méthode « str_contains »
Avec cette méthode on peut savoir si une chaîne en contient une autre, quel que soit l’emplacement (début, milieu ou fin) :
Route::get('/', function() { return var_dump(str_contains('autoroute', 'tor')); });
bool(true)
Il est aussi possible de passer un tableau comme paramètre.
Méthode « str_is »
Cette méthode nous renseigne si une chaîne correspond à un certain masque :
Route::get('/', function() { return var_dump(str_is('assets/*', 'assets/css/main.css')); });
bool(true)
Méthode « str_random »
Cette méthode génère une chaîne aléatoire, par défaut elle comporte 16 caractères :
Route::get('/', function() { return str_random(); });
XBe1bd4PwFCGEq4i
On peut ajouter un deuxième paramètre pour définir le nombre de caractères :
Route::get('/', function() { return str_random(10); });
arKEVOLXkC
Cette méthode ne doit pas être utilisée pour la cryptographie !
Méthode « snake_case »
Cette méthode permet de passer une chaîne en snake_case :
Route::get('/', function() { return snake_case('maClasse'); });
ma_classe
Remarquez que vous pouvez aussi changer le séparateur :
Route::get('/', function() { return snake_case('maClasse', '-'); });
ma-classe
Méthode « camel_case »
C’est l’inverse de la précédente :
Route::get('/', function() { return camel_case('ma_classe'); });
maClasse
Méthode « e »
Cette méthode utilise la méthode htmlentities avec l’option ENT_QUOTES avec l’encodage UTF-8 :
Route::get('/', function() { return e('L\'enfant est <strong>gros</strong>'); });
Affiche :
L'enfant est <strong>gros</strong>
Avec ce code HTML :
L'enfant est <strong>gros</strong>
Méthode slug
Cette méthode transforme une phrase en chaine utilisable pour une URL :
Route::get('/', function() { return Str::slug("Ma phrase pas évidente"); });
ma-phrase-pas-evidente
Méthode title
Cette méthode met des majuscules aux mots :
Route::get('/', function() { return Str::title("Ma phrase pas évidente"); });
Ma Phrase Pas Évidente
Méthode finish
Cette méthode ajoute une fin chaîne :
Route::get('/', function() { return str_finish("Ma phrase pas évidente", '.'); });
Ma phrase pas évidente.
Méthode limit
Cette méthode limite la longueur d’une chaîne :
Route::get('/', function() { return str_limit("Ma phrase pas évidente", 10); });
Ma phrase...
On peut choisir le style de fin ajoutée avec un troisième paramètre :
Route::get('/', function() { return str_limit("Ma phrase pas évidente", 10, ' !!!'); });
Ma phrase !!!
Méthode words
Cette méthode limite le nombre de mots d’une chaîne :
Route::get('/', function() { return Str::words("Ma phrase pas évidente", 3); });
Ma phrase pas...
On peut choisir le style de fin ajoutée avec un troisième paramètre :
Route::get('/', function() { return Str::words("Ma phrase pas évidente", 3, ' !!!'); });
Ma phrase pas !!!
Les tableaux
Méthode « array_divide »
Cette méthode permet de séparer un tableau en deux tableaux : l’un avec les clés et l’autre avec les valeurs :
Route::get('/', function() { $tableau = array( 'un' => 1, 'deux' => 2, 'trois' => 3 ); return var_dump(array_divide($tableau)); });
array(2) { [0]=> array(3) { [0]=> string(2) "un" [1]=> string(4) "deux" [2]=> string(5) "trois" } [1]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } }
Méthode « head »
Cette méthode retourne le premier élément d’un tableau :
Route::get('/', function() { $tableau = array(1, 2, 3); dd(head($tableau)); });
int(1)
En fait c’est la méthode reset de PHP qui est utilisée.
Méthode « last »
Cette méthode retourne le dernier élément d’un tableau :
Route::get('/', function() { $tableau = array(1, 2, 3); dd(last($tableau)); });
int(3)
Méthode « array_dot »
Cette méthode aplatit un tableau multidimensionnel en concaténant les clés en utilisant un point :
Route::get('/', function() { $tableau[0][0] = "0"; $tableau[0][1] = "1"; $tableau[1][0] = "a"; $tableau[1][1] = "b"; return var_dump(array_dot($tableau)); });
array(4) { ["0.0"]=> string(1) "0" ["0.1"]=> string(1) "1" ["1.0"]=> string(1) "a" ["1.1"]=> string(1) "b" }
Méthode « array_fetch »
Cette méthode fait l’inverse de la précédente :
Route::get('/', function() { $tableau['0.0'] = "0"; $tableau['0.1'] = "1"; $tableau['1.0'] = "a"; $tableau['1.1'] = "b"; return var_dump(array_fetch($tableau, '0')); });
array(4) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "a" [3]=> string(1) "b" }
Méthode « array_flatten »
Cette méthode aplatit un tableau multidimensionnel :
Route::get('/', function() { $tableau[0][0] = "0"; $tableau[0][1] = "1"; $tableau[1][0] = "a"; $tableau[1][1] = "b"; return var_dump(array_flatten($tableau)); });
array(4) { [0]=> string(1) "0" [1]=> string(1) "1" [2]=> string(1) "a" [3]=> string(1) "b" }
Méthode « array_first »
Cette méthode permet de trouver le premier élément d’un tableau qui correspond à un test passé par une fonction de rappel :
Route::get('/', function() { $ma_fonction = function ($key, $value) { return $value > 0; }; $tableau = array(0, 1, 2); return var_dump(array_first($tableau, $ma_fonction)); });
int(1)
Méthode « array_only »
Cette méthode extrait des éléments d’un tableau à partir d’un tableau de clés et retourne un tableau :
Route::get('/', function() { $tableau = array( 'un' => 1, 'deux' => 2, 'trois' => 3, 'quatre' => 4 ); return var_dump(array_only($tableau, array('deux', 'quatre'))); });
array(2) { ["deux"]=> int(2) ["quatre"]=> int(4) }
Méthode « array_except »
Cette méthode extrait des éléments d’un tableau à partir d’un tableau de clés et retourne un tableau en excluant les éléments dont les clés sont transmises :
Route::get('/', function() { $tableau = array( 'un' => 1, 'deux' => 2, 'trois' => 3, 'quatre' => 4 ); return var_dump(array_except($tableau, array('deux', 'quatre'))); });
array(2) { ["un"]=> int(1) ["trois"]=> int(3) }
Méthode « array_get »
Cette méthode récupère un élément d’un tableau en utilisant la syntaxe avec un point séparateur :
Route::get('/', function() { $tableau[0][0] = "0"; $tableau[0][1] = "1"; $tableau[1][0] = "a"; $tableau[1][1] = "b"; return var_dump(array_get($tableau, '1.0')); });
string(1) "a"
Méthode « array_set »
Cette méthode affecte une valeur à un élément d’un tableau en utilisant la syntaxe avec un point séparateur :
Route::get('/', function() { $tableau[0][0] = "0"; $tableau[0][1] = "1"; $tableau[1][0] = "a"; $tableau[1][1] = "b"; array_set($tableau, '1.0', "d"); dd($tableau); });
array(2) { [0]=> array(2) { [0]=> string(1) "0" [1]=> string(1) "1" } [1]=> array(2) { [0]=> string(1) "d" [1]=> string(1) "b" } }
Méthode « array_forget »
Cette méthode supprime un élément d’un tableau en utilisant la syntaxe avec un point séparateur :
Route::get('/', function() { $tableau[0][0] = "0"; $tableau[0][1] = "1"; $tableau[1][0] = "a"; $tableau[1][1] = "b"; array_forget($tableau, '1.0'); return var_dump($tableau); });
array(2) { [0]=> array(2) { [0]=> string(1) "0" [1]=> string(1) "1" } [1]=> array(1) { [1]=> string(1) "b" } }
Méthode « array_pull »
Cette méthode supprime un élément d’un tableau en utilisant la syntaxe avec un point séparateur et renvoie cette valeur :
Route::get('/', function() { $tableau[0][0] = "0"; $tableau[0][1] = "1"; $tableau[1][0] = "a"; $tableau[1][1] = "b"; return array_pull($tableau, '1.0'); });
Au retour on a la valeur retirée ‘a’.
Méthode « array_pluck »
Cette méthode crée un tableau avec les valeurs qui ont la même clé récupérées dans des tableaux emboités (bon c’est plus simple quand on regarde l’exemple ) :
Route::get('/', function() { $tableau[0][0] = "un"; $tableau[1][0] = "deux"; dd(array_pluck($tableau, 0)); });
array(2) { [0]=> string(2) "un" [1]=> string(4) "deux" }
t
2 commentaires
alibaba
Des erreurs à corriger dans 3 exemples :
1- Vous avez bien dit que c’est avec la méthode title qui met des majuscules aux mots.
Donc remplacez la méthode slug() par title().
Route::get(‘/’, function() {
return Str::slug(« Ma phrase pas évidente »);
//Donc ça doit être : return Str::title(« Ma phrase pas évidente »);
// pour pouvoir afficher : Ma Phrase Pas Évidente
});
2- Vous avez oublié le dernier simple quote » ‘ « , la fermeture de !!!’ :
Route::get(‘/’, function() {
return str_limit(« Ma phrase pas évidente », 10, ‘ !!!);
// ça doit être : return str_limit(« Ma phrase pas évidente », 10, ‘ !!!’);
});
3- Avec la méthode words, vous devez mettre 3 au lieu de 10 pour la limite du nombre de mots de la chaîne.
Route::get(‘/’, function() {
return Str::words(« Ma phrase pas évidente », 10, ‘ !!!);
// ça doit être : return Str::words(« Ma phrase pas évidente », 3, ‘ !!!’);
// pour pouvoir afficher : Ma phrase pas !!!
// sinon avec la limite 10 on aura comme résultat : Ma phrase pas évidente
});
bestmomo
Bonjour,
Merci pour la lecture attentive, j’ai dû remanier si souvent cet article à cause de l’évolution du framework que j’ai essaimé quelques coquilles 🙂