Bar*_*rno 11 javascript symfony twig
如何将{{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>
Run Code Online (Sandbox Code Playgroud)
这些参数在config.yml中设置
小智 19
我不明白你选择的解决方案究竟是什么问题,它应该与{{app.user}}一起使用,除了app.user是一个对象,所以你应该在你的用户中有一个toArray函数并调用:
app_user = {{ app.user.toArray|json_encode() }};
Run Code Online (Sandbox Code Playgroud)
或者像{{app.user.id}}一样调用用户的每个参数
你应该使用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>
Run Code Online (Sandbox Code Playgroud)
Lul*_*hum 18
接受的解决方案不起作用(不再?)因为twig自动化输出,"用" 更改所有JSON .
等效现在必须使用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>
Run Code Online (Sandbox Code Playgroud)
话虽这么说,直接将原始JSON打印到javascript中可能会导致一些问题,在此配置中:
<script>
var myvar = {{ '{"test": "</script>"}'|raw }};
</script>
Run Code Online (Sandbox Code Playgroud)
</script>JSON中的标记将由HTML解析器解释,从而导致脚本损坏.
真正正确的方法是将JSON打印为转义字符串,然后在js脚本中解析它:
<script>
var myvar = JSON.parse('{{ '{"test": "</script>"}'|e('js') }}');
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53214 次 |
| 最近记录: |