如何在yii2

时间:2016-10-03 13:48:23

标签: yii2 fullcalendar

我正在尝试使用fullcalendar(https://github.com/philippfrenzel/yii2fullcalendar)立即保存选择其数据来自下拉列表的事件。

因此,我需要从下拉列表中获取数据,以便在点击时保存数据并显示保存的所有数据。

为此,我首先尝试在dayclick“正常”保存事件,并提示事件标题。

但它不起作用:提示来了(警报也是如此)但我的日历上没有保存任何内容。

我已经搜索了doc(fullcalendar.io/docs/mouse/dayClick/)和演示(github.com/philippfrenzel/yii2fullcalendar-demo/blob/master/views/site/index.php)dut我找不到有用的东西。

我的事情我不明白,但我不知道是什么......

这是我的观点(index.php):

<?php
    use yii\helpers\Html;
    use yii\helpers\Url;
    use yii\helpers\ArrayHelper;
    use yii\helpers\Json;
    use app\models\FeuilleDeJourResponsable;
    use yii\web\JsExpression;
?>
<div class="site-index">
    <?php
    $JSDayClick = <<<EOF
    function(start,end) {
        var title = prompt('Event Title:');
        var eventData;
        if (title) {
            eventData = {
                title: title,
                start: start,
                end: end
            };
            $('#w0').fullCalendar('renderEvent', eventData, true);
        }
        $('#w0').fullCalendar('unselect');
    }
EOF;
?>
    <?= yii2fullcalendar\yii2fullcalendar::widget([
        'id' => 'calendar',
        'clientOptions' => [
           // 'language' => 'fa',
            //'eventLimit' => TRUE,
            'selectable' => true,
            'selectHelper' => true,
            'droppable' => true,
            'editable' => true,
//          'theme'=>true,
            'fixedWeekCount' => false,
            'defaultDate' => date('Y-m-d'),
            'dayClick'=>new \yii\web\JsExpression($JSDayClick)
        ],
        'ajaxEvents' => Url::to(['/site/jsoncalendar']),              
    ]);
?>
    <?= Html::encode($JSDayClick); ?>  
</div> 

对于我的控制器(SiteController.php),我尝试了所有我能找到的(www.yiiframework.com/extension/yii2fullcalendar/)和(github.com/philippfrenzel/yii2fullcalendar-demo/blob/master/controllers) /SiteController.php)

有人可以帮助我吗?

谢谢你, 萨拉

编辑:

我找到适用于我的第一步的东西:

$JSDayClick = <<<EOF
    function(date) {
        var title = prompt('Event Title:');
        var eventData;
        alert(date.format());
        if (title) {
            eventData = {
                title: title,
                start: date.format(),
            };
            $('#calendar').fullCalendar('renderEvent', eventData, true);
            alert(eventData.title);
            alert(eventData.start);
        }
        $('#calendar').fullCalendar('unselect');
    }
EOF;

我只需更改“$('#calendar')。fullCalendar”,其中包含ID“'id'=&gt;'calendar',”。

但对于nextstep,我需要了解如何将事件保存在我创建的其他模型上(feuille de jour)。

我一直在寻找,但我没有任何想法......

再次感谢你, 萨拉

1 个答案:

答案 0 :(得分:0)

未经测试。

$JSDayClick = <<<EOF
      //dayClick: function (date, allDay, jsEvent, view) {
      function (date, allDay, jsEvent, view) { 
        var titleNew = prompt('Event Title:'); var thedate1 = formatDate(date);

            $.ajax({
                url: Url::to(['/site/day-click-calendar-event']),
                dataType: 'json',
                data: { 
                      title: titleNew,
                      start: thedate1,
                      end: thedate1
                },
                success: function (data, response, event, date) {
                    //alert("success here");
                    $('#calendar').fullCalendar('renderEvent',
                    {
                        title: titleNew,
                        start: thedate1,
                        end: thedate1
                    }, true);
                },
                error: function () {
                    alert("Oops! Something didn't work");
                }
            });
        },

在站点控制器中:

public actionDayClickCalendarEvent()
{
 //save date
}