如何从Symfony2中的javascript访问项目配置参数

时间:2012-07-12 11:51:44

标签: symfony

我正在使用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

此标记应替换为

之后来自coonfig的实际值
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”

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是在twig globals中引用你的参数:

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>