Laravel 4 : chapitre 23 : Les helpers
Mercredi 3 avril 2013 15:59
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édenteRoute::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/publicOn peut transmettre un chemin en premier paramètre :
Route::get('/', function() { return url('test'); });
http://localhost/laravel/public/testLe 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/idLe troisième paramètre sert à passer en mode sécurisé :
Route::get('/', function() { return url('test', array(), true); });
https://localhost/laravel/public/testMais 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/loginLe 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/createVous 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.cssUn 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.cssVous 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(); });
XBe1bd4PwFCGEq4iOn peut ajouter un deuxième paramètre pour définir le nombre de caractères :
Route::get('/', function() { return str_random(10); });
arKEVOLXkCCette 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_classeRemarquez 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
Par bestmomo
Nombre de commentaires : 2