如何将 CakePHP 2.4 应用程序中的数据导出为 KML,而不仅仅是 XML 和 JSON?
这就是我一直在尝试的:
1:我创建了一个简单的控制器操作 download
来查找模型中的所有数据:
$this->set('posts', $this->Post->find('all'));
2:我在routes.php
中添加了文件类型:
Router::parseExtensions('json', 'xml', 'kml', 'csv');
3:我为我的数据视图文件类型创建了一个文件夹:
/app/View/Post/kml
4:我创建了一个视图 download.ctp
,它手动回显出 KML 文件的 XML 标记。
现在问题来了:当我把这个视图文件放在/app/View/Post/xml
下时,访问/posts/download.xml会创建一个有效的 KML 文档,我可以在 Google 地球中打开,尽管扩展名.XML。当我将文件放在/app/View/Post/kml
下并访问/posts/download.kml时,它抛出了一个错误:查看文件"/home/public/app/View/Themed/Cakestrap/Posts/download.ctp"丢失。
我尝试将视图复制到上述位置,但这只会将 XML 回显到我的标准布局中。为 XML 和 JSON 以外的文件类型创建数据视图的正确方法是什么?
Saddly KML没有在谷歌的服务器中识别的MIME类型。因此,当您将其添加到Router::ParseExtensions(...)
Cake 看不到该扩展名时,也不会尝试访问 kml 文件夹中的download.ctp
。
您有两种选择来设置它以使其工作:
- 更改服务器设置以识别扩展名Google Doc。
-
尝试像这样手动调用渲染:
<?php $this->response->type("application/vnd.google-earth.kml+xml"); $this->render('kml/download.ctp', 'xml');