laracasts/utilities - 将 PHP 变量转换为 JavaScript

将 PHP 变量转换为 JavaScript

你是否经常遇到需要将服务器端的字符串、数组、集合等等数据输出到 JavaScript 的情况?正常情况下,你会觉得这比较麻烦,尤其是随着应用规模的增长。

这个包正是为了解决这个麻烦而诞生的。

安装

通过 Composer 安装包:

{
    "require": {
        "laracasts/utilities": "~2.0"
    }
}

如果你在使用 Laravel 4:请使用 ~1.0 代替并且使用那个版本的文档。对于 Laravel 5 (或者非 Laravel)~2.0即可。

Laravel 用户

如果你是使用 Laravel,可以通过服务提供者自动绑定这个包。


// config/app.php

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

提供者启动后,你就可以使用 JavaScript 门面了,你可以在控制器中使用。

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

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

在 Laravel 5 中,你需要现在控制器头部引入 use JavaScript;

使用了上面的代码之后,你就可以在 JavaScript 中使用这些变量了。

console.log(foo); // bar
console.log(user); // User Obj
console.log(age); // 29

这个包默认情况下会绑定 JavaScript 变量到你引入的 "footer" 视图中,例如:


    

My Page

@include ('footer') // <-- 变量在这之前插入

你也可以改变默认输出到其他视图中。如下:

默认

如果使用 Laravel,只有两个配置选项是需要你注意的。一,生成默认配置文件。

php artisan vendor:publish

这步会生成一个新的配置文件:config/javascript.php

 'footer',

    /*
    |--------------------------------------------------------------------------
    | JavaScript Namespace
    |--------------------------------------------------------------------------
    |
    | By default, we'll add variables to the global window object. However,
    | it's recommended that you change this to some namespace - anything.
    | That way, you can access vars, like "SomeNamespace.someVariable."
    |
    */
    'js_namespace' => 'window'

];

bind_js_vars_to_this_view

你可以修改这个文件去指定 JavaScript 输出的视图。底部文件是一个很好的选择。

如果你引入了一些类似 layouts/partials/footer 的部件,用于存放页脚代码和引用的脚本,只需要设置 bind_js_vars_to_this_view 等于这个路径即可。Behind the scenes, the Laravel implementation of this package will listen for when that view is composed, and essentially paste the JS variables within it.

js_namespace

默认情况下,所有 JavaScript 变量会注入到全局的 window 对象里。你可能不想这样。修改 js_namespace 选项填入你想使用的 JavaScript 命名空间。如果你修改了这个选项,你需要像下面这样获取 JavaScript 变量:

MyNewNamespace.varName

Symfony2

不使用 Laravel

你可能感兴趣的:(laracasts/utilities - 将 PHP 变量转换为 JavaScript)