美文网首页
laracasts/utilities - 将 PHP 变量转换

laracasts/utilities - 将 PHP 变量转换

作者: 伍源辉 | 来源:发表于2016-12-30 11:44 被阅读446次

    将 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" 视图中,例如:

    <body>
        <h1>My Page</h1>
    
        @include ('footer') // <-- 变量在这之前插入
    </body>
    

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

    默认

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

    php artisan vendor:publish
    

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

    <?php
    
    return [
    
        /*
        |--------------------------------------------------------------------------
        | View to Bind JavaScript Vars To
        |--------------------------------------------------------------------------
        |
        | Set this value to the name of the view (or partial) that
        | you want to prepend all JavaScript variables to.
        |
        */
        'bind_js_vars_to_this_view' => '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 变量转换

          本文链接:https://www.haomeiwen.com/subject/vdcmvttx.html