【问题标题】:error rendering a sitemap with laravel使用 laravel 渲染站点地图时出错
【发布时间】:2014-11-25 09:03:25
【问题描述】:

我在使用 laravel 渲染站点地图时遇到问题。 生成的 xml 似乎没问题,但是当我尝试从 chrome 或 firefox 调用 url 时出现错误

 error on line 2 at column 6: XML declaration allowed only at the start of the document

实际上文档的第 1 行是空的,xml 声明从第 2 行开始

这是我的代码:

 return Response::view('sitemap.index', ['agences' => $agences])->header('Content-Type', 'application/xml');

我也试过那个语法:

 $xml = View::make('sitemap.index', ['agences' => $agences]);
 return Response::make($xml, 200)->header('Content-Type', 'application/xml');

这样我就可以了

 dd($xml->render()); 

并意识到返回的字符串没有空的第一行。 所以我猜 Response::make 是罪魁祸首,但我真的不知道从那里看哪里

【问题讨论】:

  • 我想您已经在文档开头检查了空格?
  • 嗨 Adrenaxus,我什至检查了三次.....
  • 尝试设置'Content-Type', 'text/xml'
  • 同样的事情发生了……不过还是谢谢
  • 我有一种强烈的感觉,即某处隐藏了空格或换行符。否则为什么开头会有一个空行?还尝试省略 php 结束标记 (?>)。这也可能会创建一个空格。

标签: php xml laravel laravel-4


【解决方案1】:

好的,我将发布我自己的答案,因为这很棘手而且花了我一天的时间,好在我对 laravel 的了解略有增加。

所以我的 xml 站点地图以空行开头,这在浏览器上产生了错误。 Xml 首先是使用刀片模板生成的。 由于它不起作用,我决定使用RoumenDamianoff/laravel-sitemap

但我遇到了同样的问题。所以最后我决定使用 SimpleXmlElement 再次自己生成 Xml,它没有任何改变。

那时我开始在 Laravel 内部挖掘,看看那个空行在请求生命周期中可能来自哪里。

基本上我的站点地图非常简单:

$urlset = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" /><!--?xml version="1.0" encoding="UTF-8"?-->');
datas = MyModel::All();
foreach($datas as $index=>$data){
// generate sitemap
}
$dom = new DomDocument();
$dom->loadXML($urlset->asXML());
$dom->formatOutput = true;
//output xml
$xml = $dom->saveXML();
$response = Response::make($xml, 200, ['Content-Type' => 'application/xml']);

只是为了测试,我决定更改我请求的模型,然后在没有第一个空行的情况下生成我的 xml。 所以我决定调查模型本身并找出错误。模型文件在 php 开始标记之前只有一个空行。

删除那个空行解决了我的问题....

【讨论】:

  • 非常感谢这个答案非常有帮助,我在 Routes.php 中也有同样的空白空间,我正在用闭包死记硬背测试 twilio。再次感谢
  • 很可能是由于 php 文件确实以空行开头!查看this question 轻松找到哪个文件!
猜你喜欢
  • 2018-02-12
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多