Laravel

Un framework qui rend heureux

Voir cette catégorie
Vers le bas
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&#039;enfant est &lt;strong&gt;gros&lt;/strong&gt;
Big Boss 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&#039;enfant est &lt;strong&gt;gros&lt;/strong&gt;');
});
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&#039;enfant est &lt;strong&gt;gros&lt;/strong&gt;

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 Tongue Out) :
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