PHP генерирует вебкаль
Я пытаюсь получить сценарий для создания iCalendar, но программа Mac Calendar постоянно сообщает мне, что данные недействительны. Я использую CakePHP. Вот что у меня есть - какие-нибудь подсказки?
function webcal() {
Configure::write('debug', 0);
$this->autoRender = false;
echo header( 'Content-Type: text/calendar; charset=utf-8' );
?>
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:20110514T170000Z
DTEND:20110515T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
<?php
exit(200);
}
1 ответ
Решение
Это в вашем контроллере? почему бы не поместить его в отдельный "пустой" макет вместо того, чтобы пытаться взломать контроллер, чтобы сделать что-то, чего он не должен делать.
// controller code
function webcal(){
Configure::write('debug', 0);
echo header( 'Content-Type: text/calendar; charset=utf-8' );
$this->layout = 'blank' // depending on what version of cakephp you're using this might be different
}
// layout code in /app/views/layout/blank.ctp
echo $content_for_layout;
// view code in /app/views/<controller>/webcal.ctp
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:20110514T170000Z
DTEND:20110515T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
не забудьте передать представлению любые переменные, которые вам могут понадобиться $this->set()