Laravel 4

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&#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

Print Friendly, PDF & Email

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
    });

Laisser un commentaire