从我的控制器中,我将名为Tag
的实体数组传递给twig文件,如下所示:
return $this->render('tags/list.html.twig', array(
'tags' => $tags,
));
然后,我用Twig for
在HTML中显示每个标记。每个Tag
都有一个实体Texts
的集合(多种语言)。我想将Texts集合传递给JS,用jQuery做一些处理。
{% for tag in tags %}
{% if tag.texts|default %}
<div data-tag-texts="{{ tag.texts|json_encode }}">...</div>
{% endif %}
...
{% endfor %}
但它在JS中返回一个空对象:Object {}
而我的文本集合不为空。通常,文本是对象的对象。
我尝试了很多东西,但结果相同:
{{ tag.texts|json_encode }}
{{ tag.texts|json_encode(constant('JSON_PRETTY_PRINT'))|raw }}
我想浏览文字,以便在语言标签中向所有人展示。所有这些都在Boostrap Modal中。所以,我必须用javascript获取文本。
感谢您的帮助。
答案 0 :(得分:1)
感谢@Matteo的想法,我安装了Symfony的Serializer Component(而不是实现\ JsonSerializable接口)。
在我的on
实体中,我添加了:
$("#Location1").on('change', function()
这非常有用,因为我们可以选择属性,并且我们有实体关系。
在我的Twig文件中:
Tag
在JS中,我有标记对象。文本是对象数组。一切都很好!
注意:请注意您的Symfony版本。我是3.0.9,我无法安装Serializer组件。我不得不将Symfony更新为3.2以使其正常工作。
答案 1 :(得分:-1)
基本文本看起来不错。我认为你必须有非UTF-8字符,这会破坏你的编码,从而返回null JSON。在将数据发送到Twig之前尝试utf8_encode
。