Blade View无法渲染xml

时间:2017-01-11 06:33:17

标签: laravel laravel-5.3 laravel-blade

我正在尝试在Laravel中创建一个XML文件。我将数据传递给视图。

但是,XML无法呈现。

这就是我在视野中所做的事情

<?php header('Content-Type: text/xml'); ?>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

@foreach ($merchants as $merchant)
<url>
<loc>{{ $merchant->merchant_url_text }}</loc>
</url>
@endforeach

</urlset>

然而,这只是多次打印变量$ merchant-&gt; merchant_url_text而没有任何结构。

对我做错的任何帮助。

2 个答案:

答案 0 :(得分:3)

您没有正确发送标头,这就是您的响应被解释为text / html的原因。在Laravel中,您可以使用header方法向响应添加一系列标头,然后再将其发送回用户。 Here's how

http://domain.com?q=page-slug to http://domain.com/page-slug

答案 1 :(得分:0)

通常,blade是一个模板引擎,用于渲染html和其他前端相关的东西。我不需要在您的刀片文件中呈现xml。相反,您可以直接从控制器返回xml响应。

请尝试此套装。

https://packagist.org/packages/jailtonsc/laravel-response-xml

编辑:

如果尝试使用刀片构建站点地图或类似内容,请尝试以下代码。

<?php header('Content-Type: text/xml'); ?>
  {{ '<?xml version="1.0"?>' }}
  {{ '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' }}

@foreach ($merchants as $merchant)
    {{ '<url>' }}
    {{ "<loc> $merchant->merchant_url_text </loc>" }}
    {{ '</url>' }}
@endforeach

{{ '</urlset>' }}