【问题标题】:CakePHP sitemap errorCakePHP 站点地图错误
【发布时间】:2014-05-01 13:37:03
【问题描述】:

我需要使用 CakePHP 自动生成站点地图。我遵循了本教程: http://designaeon.com/blog/2012/07/cakephp-xml-sitemap-generation/ 一步一步,但我的http://mysite123.com/sitemap.xml 只显示以下错误:

此页面包含以下错误:

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

我的代码如下所示:

控制器/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);
            }

       } 
    ?>

查看/站点地图/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>

查看/布局/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')); 

你能帮帮我吗?

【问题讨论】:

标签: php xml cakephp sitemap


【解决方案1】:

我建议将它放在控制器的操作中,而不是在布局中使用 PHP 设置标题值:

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

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

当然,您需要使用RequestHandler 组件,所以如果您还没有它,请将其放入控制器中:

var $components = array('RequestHandler'); 

【讨论】:

  • 是的,非常感谢,它确实解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2021-03-28
  • 2011-02-20
相关资源
最近更新 更多