Blade 视图未呈现 xml

Blade View not rendering xml

我正在尝试在 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->merchant_url_text。

对我做错的任何帮助。

通常,blade 是用于呈现 html 和其他前端相关内容的模板引擎。我不认为您需要在 blade 文件中呈现 xml。相反,您可以直接从您的控制器 return xml 响应。

请试试这个包。

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

编辑:

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

<?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>' }}

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

return response($content)
        ->withHeaders([
            'Content-Type' => 'text/xml'
        ]);