Twig / Symfony正在输出有趣的角色

时间:2017-06-08 16:03:41

标签: xml symfony twig

我正在编写一些导出来将内容从我们的自定义Symfony CMS移动到基于Craft CMS构建的新网站。

要将文章分解为单独的字段,我使用DOMDocument循环遍历元素。这一切似乎都在起作用 - 倾销内容然后退出显示我期望的内容。然后我准备一个响应并将其传递给视图模板并将其转储出来,我的字符变形不正确。

我假设这与字符编码有关,但我不确定如何。

控制器中的代码:

$response = new Response();
$response->headers->set('Content-Type', 'xml');

return $this->render('FrontBundle:Export:articles.html.twig', array(
    'pages'     => $pages
), $response);

正如我所说,$ pages已经准备好了DOMDocument,并在从控制器中转出时按预期显示。 e.g:

  

它很难,很艰苦,很费力

当这个传递给视图时,我得到这个输出:

  

它很难,它很艰苦而且很费力

这是由此产生的:

<?xml version="1.0" encoding="UTF-8"?>
<pages>
    {% for page in pages %}
        <page>
            <title>{{ page.title }}</title>
            <intro>{{ page.article.intro|join('') }}</intro>
            <article>
                {% for block in page.article.body %}
                    <block>
                        <heading>{{ block.heading }}</heading>
                    </block>
                    <block>
                        <content>{{ block.content }}</content>
                    </block>
                {% endfor %}
            </article>
        </page>
    {% endfor %}
</pages>

虽然我也不认为这是一个XML问题,因为如果我不设置内容类型并将视图剥离到{{ dump(pages) }}

,同样的事情就会发生

所以我完全陷入困境 - 任何建议都会非常感激!

1 个答案:

答案 0 :(得分:0)

在其中一条评论的背面,我发现需要反复指定UTF-8。

之后,这只是在每次操作后回显内容的情况,似乎是DOMDocument的责任。

对于任何有同样问题的人,这里的答案是为我解决的问题:PHP DOMDocument loadHTML not encoding UTF-8 correctly

具体而言,$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));

另请注意,似乎你不能依赖var_dump来查看内容是否正常,即使在DOMDocument搞砸了正确显示文本之后也是var_dump,但循环并回显它会显示问题。< / p>