xml - Symfony Twig 和 xml - 文档为空错误

标签 xml symfony twig

因为 xml 的声明应该发生在第一行,并且空行被添加到渲染文件的开头,从而导致此错误

那么问题是如何删除文档开头的空行?或者有没有其他方式(不是捆绑)来使用站点地图?

Twig

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="{{asset("sitemap.xsl")}}"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for url in urls %}
    <url>{# check if hostname is not alreay in url#}
        <loc>{{url.loc}}</loc>
    </url>
{% endfor %}
</urlset>

Controller

<?php

namespace MarketplaceBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
// use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class SitemapController extends Controller
{
    /**
     * @Route("/sitemap.{_format}", name="marketplace_sitemap", Requirements={"_format" = "xml"})
     */
    public function sitemapAction()
    {
        $urls = array();

        // add some urls homepage
        $urls[] = array('loc' => $this->get('router')->generate('marketplace'), 'changefreq' => 'weekly', 'priority' => '1.0');

        // service


        $response = new Response(
                                $this->render("MarketplaceBundle:sitemap:sitemap.xml.twig",
                                    array('urls' => $urls) ),
                                200,
                                array('Content-Type' => 'application/xml')
                                );
        return $response;
    }
}

使用此代码时我总是收到错误:

错误

enter image description here

最佳答案

试试这个:

    $response = $this->render("MarketplaceBundle:sitemap:sitemap.xml.twig", array(
        'urls' => $urls
    ));
    $response->headers->add(array('Content-Type' => 'application/xml'));
    return $response;

$this->render() 已返回响应,因此您无需将其嵌入到另一个 Response 对象中。

关于xml - Symfony Twig 和 xml - 文档为空错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41467280/

相关文章:

java - 无法在 Android 中显示画廊中选定的图像

c# - 将字符串转换为变量名

tags - 如何在 Drupal 8 上的 TWIG 中以纯文本形式显示节点的标题?

php - 在 Laravel 中通过 TwigBridge 加载 Twig 扩展

Symfony2 : How to set the root path in a Symfony CLI command

带点符号的 jQuery 多重选择器?

java - 制作一个创建对象并在单击时显示的按钮

javascript - 将 asset twig 函数与 js 变量连接

symfony - 如何将 KnpPaginator 手动计数移动到 Repository 类?

symfony - 如何在 symfony2 中通过 KnpMenu 创建树项目菜单