Čtení událostí pro fullcalendar

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jedlicka
Člen | 70
+
0
-

Ahoj,

řeším integraci kallendáře (https://fullcalendar.io/) do nette. Kalendář se mi zobrazuje a chci do něho načíst události z databáze. Bohužel se mi ale nedaří zavolat handle prezenteru (pro vyčtení událostí) ze šablony kalendáře.

Upozorňuji, že moje verze nette je 2.1.

Presenter pro kalendář:

class CalendarPresenter extends BasePresenter {
	private $database;

	public function __construct(Nette\Database\Context $database) {
		$this->database = $database;
	}

	...

	public function handleGetEvents($start, $end) {
		...
	}
}

Šablona latte pro kalendář (pouze část ajaxu kalendáře):

<script>
	$(document).ready(function() {
		$('#calendar').fullCalendar({
			header: {
				left: 'prev,next today',
				center: 'title',
				right: 'month,agendaWeek,agendaDay,listMonth'
			},
			events: {link getEvents!},
		});
	});

</script>

Když zadám do prohlížeče https://domena.cz/calendar, tak žádná chyba se nezobrazí, a když se podívám do debugu, tak místo {link getEvents!} se vloží "/calendar/?do=getEvents", což je správně, ale události se nenačtou (ten handle se nezavolá).
Pokud přímo do prohlížeče zadám https://domena.cz/calendar/?do=getEvents, tak se ten handler zavolá.

Nevíte někdo prosím, kde dělám chybu, že se nezavolá handle getEvents ze šablony při načtení stránky kalendáře?

Děkuji za každou radu.

Martin

Jecma
Člen | 9
+
0
-

Zkus mu vygenerovat absolutní cestu.

events: {link //getEvents!},
blaztar
Člen | 93
+
0
-

Events očekává už události tuším a ne url adresu. To si pošli někde předem ajaxem a předej response. Nebo si to rovnou předej do template.

jedlicka
Člen | 70
+
0
-

Díky, absolutní cesta nepomůže. Events očekává události v JSONu. Když použiji php function:

events: function(start, end, timezone, callback) {
	var uid = {$user->getIdentity()->id};
	$.ajax({
		url: 'https://domena.cz/calendar/events.php',
		data: 'uid=' + uid + '&start=' + start + '&end=' + end,
		type: 'GET',
		dataType: "json",
		success: function (response) {
			callback(response);
		}
	});
},

tak to funguje, ale události se čtou z databáze v samostatném PHP souboru events.php. Já bych chtěl zavolat action/handle z presenteru, abych mohl využít nette. Bohužel se mi nedaří action/handle zavolat. Sice mohu načíst události při initu presenteru a pak je předat v proměnné {$events}, ale já potřebuji události vyčítat z databáze průběžně (např. při změně měsíce).

Díky.

Martin