Vista iCal
1Presentación
La vista iCal te permite enviar feeds en formato iCalendar, usado para transmitir eventos que se añaden a un calendario.
2Uso
Para usar la vista iCal, debes definir el uso de esta vista. Además de esto, debes asignar una variable de plantilla llamada ical, que es un array asociativo con las siguientes claves:
- name: (opcional) Nombre del calendario.
- description: (opcional) Descripción del calendario.
-
events: (obligatorio) Lista de eventos del calendario. Cada elemento de la lista debe ser
un array asociativo con las siguientes claves:
- name: (obligatorio) Nombre del evento.
- description: (opcional) Descripción del evento.
- html: (opcional) Descripción del evento en formato HTML.
- date: (opcional) Fecha del evento en formato 'YYYY-MM-DD' (si esta clave no está definida, deben definirse las claves dateStart y dateEnd).
- dateStart: (opcional) Fecha de inicio del evento en formato 'YYYY-MM-DD hh:mm:ssZ' o formato 'YYYY-MM-DD hh:mm:ss+hh:mm' (si esta clave no está definida, debe definirse la clave date).
- dateEnd: (opcional) Fecha de fin del evento en formato 'YYYY-MM-DD hh:mm:ssZ' o 'YYYY-MM-DD hh:mm:ss+hh:mm' (si esta clave no está definida, debe definirse la clave date).
- uid: (opcional) Identificador único del evento (recomendado; en caso contrario, se genera un identificador aleatorio).
- dateCreation: (opcional) Fecha de creación del evento en formato 'YYYY-MM-DD hh:mm:ssZ' o formato 'YYYY-MM-DD hh:mm:ss+hh:mm'.
- organizerName: (opcional) Nombre del organizador del evento.
- organizerEmail: (opcional) Dirección de correo electrónico del organizador del evento.
Aquí tienes un ejemplo de envío de datos en formato iCal:
class ApiController extends \Temma\Web\Controller {
public function getEvents() {
$this['ical'] = [
'name' => 'Mi agenda',
'events' => [
[
'name' => 'Dentista',
'dateStart' => '2025-04-07 15:30:00+01:00',
'dateEnd' => '2025-04-07 16:25:00+01:00',
'uid' => 'evt-01',
],
],
];
$this->_view('\Temma\Views\ICal');
}
}
- Líneas 3 a 13: Definición de los datos que se transmitirán a la vista.
- Línea 14: Especificamos que la vista que se usará para los datos salientes es la vista iCal (y no la vista Smarty habitual).
Nota: la vista iCal obviamente no necesita ninguna plantilla, ya que son los datos PHP los que se serializan directamente.
Los datos recibidos tendrán este aspecto:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Temma//ICalView 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-TIMEZONE:UTC
X-WR-CALNAME:Mi agenda
BEGIN:VEVENT
UID:evt-01
DTSTART:20250407T143000Z
DTEND:20250407T152500Z
SUMMARY:Dentista
TRANSP:TRANSPARENT
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
También es posible transmitir los datos a exportar usando la variable de plantilla @output
en lugar de la variable ical.
Si @output está definida, tiene prioridad.
3Descarga
Si quieres que el feed iCal se envíe como un archivo adjunto descargable, define una variable de plantilla llamada filename, que contenga el nombre del archivo.
Ejemplo:
$this['filename'] = 'event.ics';