php - CakePHP 站点地图错误

标签 php xml cakephp sitemap

我需要使用 CakePHP 自动生成站点地图。我按照这个教程进行操作: http://designaeon.com/blog/2012/07/cakephp-xml-sitemap-generation/ 一步一步来,但是我的http://mysite123.com/sitemap.xml只显示以下错误:

此页面包含以下错误:

第 2 行第 6 列错误:仅允许在文档开头进行 XML 声明 下面是出现第一个错误之前的页面呈现。

我的代码如下所示:

Controller /SitemapsController.php:

 <?php
        class SitemapsController extends AppController{ 
            var $name = 'Sitemaps';
            var $uses = array('Video');

            function index(){   
                $this->set('videos', $this->Video->find('all'));
                Configure::write ('debug', 0);
            }

       } 
    ?>

查看/Sitemaps/xml/index.ctp:

  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <?php foreach ($videos as $vid): ?>
        <url>
            <loc><?php echo Router::url('/',true); ?>post/
                <?php echo $vid['Video']['id'];?></loc>
            <changefreq>daily</changefreq>
            <priority>1.0</priority>
        </url>
        <?php endforeach; ?>
    </urlset>

View/Layouts/xml/default.ctp:

<?php header('Content-type: text/xml'); ?> 
<?php echo $content_for_layout; ?> 

routes.php:

Router::parseExtensions('xml'); 
Router::connect('/sitemap', array('controller' => 'sitemaps', 'action' => 'index')); 

你能帮我一下吗?

最佳答案

我建议将其放入 Controller 的操作中,而不是在布局中使用 PHP 设置 header 值:

$this->RequestHandler->respondAs('xml');

这是真正的“蛋糕”方式,应该可以解决您的问题(可能是空格或标题之前输出的内容)。

当然,您需要使用 RequestHandler 组件,因此如果您还没有它,请将其放入 Controller 中:

var $components = array('RequestHandler'); 

关于php - CakePHP 站点地图错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23408838/

相关文章:

php - 将 PHP 数组数据保存到 mysql 表的最佳方法

c# - 将 XML 反序列化为类

xml - 如何使用 LINQ to XML 包含 CData?

javascript - Cake PHP 3.0 中的 Jquery ajax 调用

javascript - 无法在 dhtmlxgantt php 中加载数据库

php - 无法使用 PHP 7.2 安装 PHP zip 存档

php - PDO - 如果这些查询中的任何一个返回空结果,则捕获

javascript - 如何使用纯 JavaScript 将 XML 文件中的数据解析为 HTML 表?

php - Cakephp3 ElasticSearch查询Q

cakephp - 控制对 CakePHP 中函数的访问的最佳方法