Zprovoznění FullCalendar pod ajax a php

před 6 měsíci

jAkErCZ
Člen | 232
+
-3
-

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 :)

před 6 měsíci

CZechBoY
Člen | 3303
+
+1
-

Nemáš do events předat kolekci obsahující data? Teď tam dáváš nějaký nastavení pro ajax…

před 6 měsíci

jAkErCZ
Člen | 232
+
0
-

CZechBoY napsal(a):

Nemáš do events předat kolekci obsahující data? Teď tam dáváš nějaký nastavení pro ajax…

Však když vidím ten dump tak to jsou ty data snad ne..

před 6 měsíci

CZechBoY
Člen | 3303
+
0
-

Absolutně nevim co tam dumpuješ, takže třeba jo – třeba ne.

před 6 měsíci

jAkErCZ
Člen | 232
+
-1
-

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)

před 6 měsíci

Pavel Kravčík
Člen | 961
+
+1
-

Opravdu nevíš?

@CZechBoY: Polepši se, měl bys vědět. :)

před 6 měsíci

norbe
Backer | 402
+
0
-

Problém je v tom, že JsonResponse očekává pole, viz API, ty už tam posíláš json string…

před 6 měsíci

jAkErCZ
Člen | 232
+
0
-

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)

před 6 měsíci

Ondřej Kubíček
Člen | 372
+
+2
-

prostě ta funkce getEvents bude vracet array, ne json encode

pak ta actionLoadEvents vrátí:

return $this->sendJson($data);

což ti vrátí json

před 6 měsíci

jAkErCZ
Člen | 232
+
0
-

Ondřej Kubíček napsal(a):

prostě ta funkce getEvents bude vracet array, ne json encode

pak 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)