Zprovoznění FullCalendar pod ajax a php
- jAkErCZ
- Člen | 322
Zdravím,
mám takový problém snažím se načítat eventy z db ale a vracet v json aby to mohlo js přečíst.
to dělám vytahuji z db data
public function getEvents()
{
$result = $this->database->table(self::TABLE_NAME)->order('id')->fetchAll();
foreach ($result as $row)
{
$data[] = [
'id' => $row["id"],
'title' => $row['title'],
'start' => DateTime::from($row['start'])->format('Y-m-d H:m:s'),
'end' => DateTime::from($row['end'])->format('Y-m-d H:m:s'),
'className' => $row['className']
];
}
return Json::encode($data, Json::PRETTY);
}
A vracím je jako json… potom v ze šablony pomocí makra
{plink Calendar:loadEvents}
si načítám actionLoadEvents
public function actionLoadEvents(){
$data = $this->calendarRepository->getEvents();
$this->redrawControl('calendar');
bdump($data);
$this->sendResponse(new JsonResponse($data));
}
a v js to mám takto…
var $action = document.getElementById('calendar').getAttribute('data-actions');
events: {
url: $action,
error: function()
{
alert("error");
},
success: function()
{
console.log("successfully loaded");
}
}
Console mi vrací successfully loaded ale zároveň chybu
fullcalendar.min.js:6 Uncaught TypeError: Cannot read property 'hasTime' of undefined
at P (fullcalendar.min.js:6)
at V (fullcalendar.min.js:6)
at A (fullcalendar.min.js:6)
at F (fullcalendar.min.js:6)
at fullcalendar.min.js:6
at Object.success (fullcalendar.min.js:6)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at z (jquery.min.js:4)
at XMLHttpRequest.<anonymous> (jquery.min.js:4)
a dump vrací…
"[
{
"id": 1,
"title": "Test",
"start": "2018-10-01 14:10:59",
"end": "2018-10-01 14:10:59",
"className": " ... " (342)
Co dělám blbě? Když jsem si dohledával tak všude jsem viděl že to mám dobře ale i tak mi to nezobrazuje v kalendáři…
ale když použiju
var defaultEvents = [{
title: 'Event Title1',
start: '2018-10-01 14:10:59',
end: '2018-10-01 14:10:59',
className: 'bg-info'
}];
tak to funguje proč když to vracím z db.. to nefunguje i když struktura je naprosto identická…
Děkuji všem za pomoc :)
- jAkErCZ
- Člen | 322
CZechBoY napsal(a):
Absolutně nevim co tam dumpuješ, takže třeba jo – třeba ne.
Opravdu nevíš? co třeba public function actionLoadEvents() kde je i vidět bdump();
Když sem si to projel přes xDebug tak mi hodnota $data vrací
"[\n {\n \"id\": 1,\n \"title\": \"Test\",\n \"start\": \"2018-10-01 14:10:59\",\n \"end\": \"2018-10-02 14:10:59\",\n \"className\": \"bg-info\"\n },\n {\n \"id\": 2,\n \"title\": \"Další den\",\n \"start\": \"2018-10-02 11:10:22\",\n \"end\": \"2018-10-02 11:10:22\",\n \"className\": \"bg-success\"\n }\n]"
Není to nějak špatně že tam je \n a \??
Editoval jAkErCZ (2. 10. 2018 14:55)
- jAkErCZ
- Člen | 322
norbe napsal(a):
Problém je v tom, že JsonResponse očekává pole, viz API, ty už tam posíláš json string…
No když sem odstranil to tu funkci sendResponse tak mi Console vrací
admin/calendar/load-events?start=2018-09-30&end=2018-11-11&_=1538486616281 404 (Not Found)
Už sem hledal všude možně a nikde není moc řešení jak postupovat.. ani v tomto návodu..
Postupoval jsem podle tohoto
Caledar with PHP
Editoval jAkErCZ (2. 10. 2018 15:30)
- Ondřej Kubíček
- Člen | 494
prostě ta funkce getEvents
bude vracet array, ne
json encode
pak ta actionLoadEvents
vrátí:
return $this->sendJson($data);
což ti vrátí json
- jAkErCZ
- Člen | 322
Ondřej Kubíček napsal(a):
prostě ta funkce
getEvents
bude vracet array, ne json encodepak ta
actionLoadEvents
vrátí:return $this->sendJson($data);
což ti vrátí json
Tak to bylo opravdu tím že jsem to vracel Json už v Modelu a ne až v Presenteru :)
Díky moc!!!
Editoval jAkErCZ (2. 10. 2018 15:36)