Image Principale

Assigner des variables Javascript avec Laravel


Parfois lors du développement, nous avons besoin d'envoyer des données Javascript à nos scripts. Et bien il est possible de le faire directement dans nos controlleurs en utilisant PHP-Vars-To-Js-Transformer, développé par le créateur de laracasts.

Vous connaissez sûrement Laracasts si vous êtes un adepte de laravel. Si ce n'est pas le cas, je vous conseille vivement de vous y mettre. Ce site est plein de ressources gratuites, mais également de ressources premium très intéressantes.

Et le package que je vais vous présenter aujourd'hui est justement développé par le créateur de ce site, Jeffrey Way.

Pour cet article, il vous faudra donc commencer par ajouter des lignes dans votre fichier composer.json situé à la racine de votre projet laravel.

Et ajouter dans la partie require :

"laracasts/utilities": "~2.0"

Ainsi, la partie require doit ressembler à cela:

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
    "laracasts/utilities": "~2.0"
},

Il ne vous reste plus qu'à ouvrir un terminal et de lancer ces lignes:

cd /Users/martar/projects/monprojet
composer update

Une fois que tout s'est mis à jour, il vous faut déclarer ce nouveau package dans le fichier config/app.php :

'providers' => [
    '...',
    Laracasts\Utilities\JavaScript\JavaScriptServiceProvider::class,
];

Une fois que c'est fait, vous pouvez utiliser une façade, et ajouter en haut de votre controller un simple:

use JavaScript;

Notez bien la majuscule du s de Script. J'avais passé pendant l'installation à comprendre pourquoi ça ne fonctionnait pas. Vous pouvez ensuite utiliser cette façade de la façon suivante, comme l'indique la documentation:

public function index()
{
    JavaScript::put([
        'foo' => 'bar',
        'user' => User::first(),
        'age' => 29
    ]);

    return View::make('hello');
}

Ainsi, vous aurez accès à une variable foo comprenant la string 'bar', une variable user comprenant toutes les informations du premier utilisateur de la base de données, et une variable age comprenant 29.

Voici les deux commits que j'ai effectué sur martar pour ajouter ces fonctionnalités: