繁体   English   中英

Javascript中的变量Twig

[英]variable Twig in Javascript

如何将{{app.user}}传递给Javascript?

现在我做一个像块;

<script type="text/javascript">
    var app_name = '{{ app_name }}';
    var app_url= '{{ app_url }}';
    var app_description= '{{ app_description }}';
    var app_email= '{{ app_email }}';
    var app_title= '{{ app_title }}';
    var app_dominio= '{{ app_dominio }}';
    var env = '{{ app.environment }}';
</script>

这些参数在config.yml中设置

我不明白你选择的解决方案究竟是什么问题,它应该与{{app.user}}一起使用,除了app.user是一个对象,所以你应该在你的用户中有一个toArray函数并调用:

app_user = {{ app.user.toArray|json_encode() }};

或者像{{app.user.id}}一样调用用户的每个参数

文档: https//twig.sensiolabs.org/doc/filters/json_encode.html

你应该使用json_encode作为你上面的变量,如果你的一个字符串引用它会破坏你的javascript。

个人资料示例:

<script type="text/javascript">
    nickname = {{ profile.nickname|json_encode() }}; // Nickname will be a string
    // 2nd solution if you have more informations related to profile
    profile = {
        nickname: {{ profile.nickname|json_encode() }},
        lastname: {{ profile.lastname|json_encode() }}
    };
    // Profile is now an object with a nickname property.
    // use profile.nickname on your javascripts
</script>

接受的解决方案不起作用(不再?),因为twig自动化输出,改变所有JSON " with &quot

等效现在必须使用raw过滤器:

<script type="text/javascript">
    nickname = {{ profile.nickname|json_encode()|raw }}; // Nickname will be a string
    // 2nd solution if you have more informations related to profile
    profile = {
        nickname: {{ profile.nickname|json_encode()|raw }},
        lastname: {{ profile.lastname|json_encode()|raw }}
    };
    // Profile is now an object with a nickname property.
    // use profile.nickname on your javascripts
</script>

话虽这么说,直接将原始JSON打印到javascript中可能会导致一些问题,在此配置中:

<script>
    var myvar = {{ '{"test": "</script>"}'|raw }};
</script>

JSON中的</script>标记将由HTML解析器解释,从而导致脚本损坏。

真正正确的方法是将JSON打印为转义字符串,然后在js脚本中解析它:

<script>
    var myvar = JSON.parse('{{ '{"test": "</script>"}'|e('js') }}');
</script>

试试这个:

var title = '{{ 'My Daily Activities'|trans({}, 'general') }}'; 

有额外的萎缩

使用属性或任何标记

示例: <span profile="{{ profile.nickname }}"></span>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM