Quería agregar un calendario a mi proyecto que hago uso del patrón MVC y opté por fullcalendar:
El problema viene en el momento que intento codificar la respuesta json. El código que uso es el siguiente:
proyectosModel.php
Código:
proyectosController.phppublic function obtenerTareasProyecto($idProyecto){ $sql = "SELECT tareasProyectos.nombre as title, tareasProyectos.fechaInicio as start, tareasProyectos.fechaLimite as end, tareasProyectos.estado , proyectos.idProyecto, proyectos.nombre as NombreProyecto, usuarios.codUsuario, usuarios.nombre, usuarios.apellido1, usuarios.apellido2\n"; $sql .= "FROM tareasProyectos\n"; $sql .= "JOIN proyectos on tareasProyectos.FKidProyecto = proyectos.idProyecto\n"; $sql .= "JOIN usuarios on tareasProyectos.FKusuarioAsignado = usuarios.codUsuario\n"; $sql .= "WHERE tareasProyectos.FKidProyecto ='" . $idProyecto . "'"; $tareasProyecto = $this->_db->query($sql); return $tareasProyecto->fetchall(PDO::FETCH_ASSOC); }
Código:
public function obtenerTareasProyecto() { echo json_encode($this->_proyectos->obtenerTareasProyecto($this->getTexto('idProyecto'))); }
proyectos.js
Código:
$(document).ready(function(proyecto){ var cargarTareas = $.post('/distribucion/proyectos/obtenerTareasProyecto', { idProyecto: proyecto }, function(datos){ //Aquí debería enlazar el titulo, la fecha de inicio y la fecha final con los eventos pero no sé cómo. }, 'json'} //Cargamos el calendario principal $("#calendario").fullCalendar({ weekMode:'variable', header:{ //Cabecera left: 'month,basicWeek,agendaDay', center: 'title', right: 'today prev,next' }, firstDay:1, //Primer día de la semana selectable: true, //Fechas seleccionables titleFormat:{//Formato del título del calendario month: "MMMM yyyy", week: "d 'de' MMMM", day: "dddd, d 'de' MMMM, yyyy" }, columnFormat:{ month:"dddd", week:"dddd d/M", day:"dddd d/M" }, monthNames:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], monthNamesShort:['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'], dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], dayNamesShort:['Dom','Lun','Mar','Mie','Jue','Vie','Sab'], buttonText:{ month:'mes', week:'semana', day: 'día', today:'Hoy' }, eventSources: [ { events: //¿Cómo puedo agregar los eventos desde el método $.post()? } ] }); }
En el fichero de javascript es donde cargo con ajax los eventos mediante $.post() pero no sé como agregarlos a events:[] que es el array en formato Json para enlazar los eventos en mi caso tareas de un proyecto. Supongo que tendría que crear un array en la función $.post para luego enlazar con la función fullCalendar().
Saludos cordiales.
Francisco J.