CakePHP中的自动化站点地图

时间:2010-02-11 17:42:29

标签: php xml cakephp sitemap

我正在关注this tutorial在CakePHP中创建自动站点地图。一切都很简单,但我无法输出XML。控制器看起来像

function sitemap ()
{
    Configure::write ('debug', 0);
    $cats = $this->Category->find('all', array('fields' => array('nicename', 'modified')), null, -1);
    $posts = $this->Post->find('all', array('fields' => array('name', 'modified')), null, -1);
    $this->set(compact('cats','posts'));
    $this->RequestHandler->respondAs('xml');
    $this->viewPath .= '/xml';
    $this->layoutPath = 'xml';
}

所以它使用布局app / views / layouts / xml / default.ctp

问题是我不知道在布局文件中放什么,在教程中没有任何迹象。如果我把

<?php
    echo '<?xml version="1.0" encoding="UTF-8"?>'. "\n";
    echo $content_for_layout;
?>

我以正确的格式获取文件,但是作为文本。如果我把

<?xml version="1.0" encoding="UTF-8"?>
<?php echo $content_for_layout; ?>

我获取了一个XML文件(在Firefox中以不同的方式显示)但是完全为空,因此XML解析器会抱怨。什么是正确的方法?

1 个答案:

答案 0 :(得分:3)

我只是偶然发现了你的问题,很遗憾的看到它没有答案。所以让我们试一试。

在您的控制器中,您已经拥有$this->RequestHandler->respondAs('xml');所以根据this comment,它应该足够了。您是否尝试将布局留空?

此外,您应该在站点地图控制器或app_controller中的某个位置var $components = array('RequestHandler');