Ошибка карты сайта CakePHP


Мне нужно автоматически генерировать карты сайтов с помощью 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);
            }

       } 
    ?>

Просмотр / 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; ?> 

Маршруты.php :

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

Не могли бы вы помочь мне?

1 2

1 ответ:

Я бы рекомендовал поместить это в действие вашего контроллера вместо установки значения заголовка с помощью PHP в вашем макете:

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

Это реальный "торт" способ сделать это, и должен решить вашу проблему (которая, вероятно, пробел или что-то выводится перед заголовком).

Конечно, вы должны использовать компонент RequestHandler, поэтому поместите его в контроллер, если у вас его еще нет:

var $components = array('RequestHandler');