показать событие в fullcalendar с помощью json.parse (SyntaxError: отсутствует: после идентификатора свойства) - PullRequest
0 голосов
/ 24 мая 2019

Показывать события в календаре после экрана загрузки.

events: {
    JSON.parse(get_data());
},

КОНТРОЛЛЕР, все в порядке, здесь нет проблем, кроме JSON.PARSE

$calendar = array();
foreach($data_calendar as $key => $val) {
    $calendar[] = array(
        'id' => intval($val - > id),

        'title' => $val - > title,
        'description' => trim($val - > description),
        'start' => date_format(date_create($val - > start_date), "Y-m-d H:i:s"),
        'end' => date_format(date_create($val - > end_date), "Y-m-d H:i:s"),
        'color' => $val - > color,
    );
}

$data = array();
$data['get_data'] = json_encode($calendar);

$data['telaativa'] = 'agenda'; //retorna agenda penso que manté menu barra esquerda colapsada em agenda 
$data['tela'] = ('/calendario/view_agenda--');
view_agenda--

$this - > load - > view('view_home2', $data);

РЕЗУЛЬТАТ id с 1 или «1» в результате, потому что я объявляю intval для id, чтобы я мог получить оба формата в выводе.

 'get_data' => string '[{"id":1,
 'get_data' => string '[{"id":"1",
array (size=3)
      'get_data' => string '[{"id":1,"title":"teste evento1","description":"descri\u00e7\u00e3o do evento bla bla bla","start":"2019-05-06 00:00:00","end":"2019-05-07 00:00:00","color":"#0071c5"},{"id":6,"title":"cert soldador 1-1","description":"descrtivo do certificado ser 111 bw t1-25mm s275","start":"2019-05-29 23:00:00","end":"2019-05-30 00:00:00","color":"#40E0D0"},{"id":7,"title":"cert soldador 1-2 soldador nr1","description":"certificado de soldador nr 1 doc 1-2","start":"2019-05-30 00:00:00","end":"2019-05-31 00:00:00","color'... (length=5865)
      'telaativa' => string 'agenda' (length=6)
      'tela' => string '/calendario/view_agenda--' (length=25)

VIEW

$(document).ready(function() {
    $('.date-picker').datepicker();
    $('#calendarIO').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        },
        defaultDate: moment().format('YYYY-MM-DD'),
        editable: true,
        eventLimit: true, // allow "more" link when too many events
        selectable: true,
        selectHelper: true,
        select: function(start, end) {
            $('#create_modal input[name=start_date]').val(moment(start).format('YYYY-MM-DD'));
            $('#create_modal input[name=end_date]').val(moment(end).format('YYYY-MM-DD'));
            $('#create_modal').modal('show');
            save();
            $('#calendarIO').fullCalendar('unselect');
        },
        eventDrop: function(event, delta, revertFunc) { // si changement de position
            editDropResize(event);
        },
        eventResize: function(event, dayDelta, minuteDelta, revertFunc) { // si changement de longueur
            editDropResize(event);
        },
        eventClick: function(event, element) {
            deteil(event);
            editData(event);
            deleteData(event);
        },

        events: {

            JSON.parse(get_data());

        },

    });
});

ERROR Ошибка синтаксиса: отсутствует: после идентификатора свойства

Если я удалю JSON.parse(get_data());, мой календарь будет виден, но никаких событий. Если я добавлю событие, оно будет отображаться до тех пор, пока я не обновлю страницу. Все функции функции ожидают загрузки данных из БД в календарь.

1 Ответ

0 голосов
/ 24 мая 2019

Вы, похоже, не понимаете, как использовать данные вашего PHP-представления в вашем представлении.

Я думаю, может быть, вы должны прочитать это: https://www.codeigniter.com/user_guide/general/views.html#adding-dynamic-data-to-the-view.Он показывает, как вставить данные PHP, которые вы предоставили представлению, на вашу страницу.

То, что вы сейчас делаете, - это написание чистого JavaScript, который пытается вызвать функцию, которая не существует.Что вам нужно сделать, это написать фрагмент PHP, чтобы вставить данные на стороне сервера в код HTML и JavaScript, который создает PHP.

Я не эксперт CodeIgniter, но на основе этой страницы документации,я думаю, что вы должны написать:

events: <?php echo $get_data; ?>,

Если вы вставите его без кавычек, то он будет автоматически обрабатываться как литерал массива JavaScript, поэтому JSON.parse () не требуется.Это работает, потому что синтаксис JSON является подмножеством допустимого синтаксиса объекта JavaScript.Если вы используете функцию просмотра исходного кода в своем браузере для просмотра готового вывода своей страницы, вы поймете, что я имею в виду.

(Обратите внимание, что вам также необходимо удалить { и } изобъявление events:, поскольку fullCalendar ожидает массив, а не объект.

...