0

我正在使用 Symfony 2.1 dev 并寻找从 app/config/parameters.yml (ini) 获取参数的最简单方法。

简单的例子:

我在 parameters.yml 中有记录

parameters:
    url: "http://domain.com"

然后我想以某种方式在静态 js 文件中使用它

var url = "{{ app.url }}"; // trying to avoid hardcode

此标记应替换为 config 之后的实际值

app/console assetic:dump

所以最终的js会有

var url = "http://domain.com";

目前我正在考虑编写自己的控制台命令,但首先我想确保在 Symfony2 中没有任何标准的方式来做这些事情,或者可能是一些可以阻止我的包?

更新:我想用 AsseticBundle 来做这个,比如 YUI 和 LESS

assetic:
    debug:          %kernel.debug%
    use_controller: false
    write_to:       %kernel.root_dir%/../web
    filters:
        cssrewrite: ~
        lessphp: ~
        yui_js:
            jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar"
        yui_css:
            jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar

添加另一个过滤器,将 js 文件中的令牌 {{ app.url }} 替换为实际的“http://domain.com”

4

1 回答 1

1

一个简单的解决方案是在 twig 全局变量中引用您的参数:

parameters:
    url: "http://domain.com"
    an_array:
        twig: "is cool"
        and: "symfony2 to"

twig:
    globals:
        app_parameters:
            url: %url%
            an_array: %an_array%

然后在您的模板中:

<script>
window.parameters = {{ app_parameters|json_encode|raw }};
</script>

会呈现如下内容:

<script>
window.parameters = {"url":"http://domain.com","an_array":{"twig":"is cool","and":"symfony2 to"}};
</script>
于 2012-07-12T12:40:21.477 回答