Автоматизированная карта сайта в CakePHP - PullRequest
2 голосов
/ 11 февраля 2010

Я следую этому руководству для создания автоматических карт сайтов в 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';
}

, поэтому он использует приложение макета / 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 Ответ

3 голосов
/ 29 сентября 2010

Я просто наткнулся на ваш вопрос, и мне было грустно видеть его без ответа. Итак, давайте попробуем.

В вашем контроллере у вас уже есть $this->RequestHandler->respondAs('xml');, поэтому согласно этому комментарию , этого должно быть достаточно. Вы пытались оставить макет пустым?

Кроме того, вы должны иметь var $components = array('RequestHandler'); в какой-то момент либо в вашем контроллере карты сайта, либо в вашем app_controller.

...