1

我试图了解 $start 和 $end 变量如何/在何处传递给 FullCalendar Yii 模块的 MainController.php 脚本中的 actionList 函数:

http://www.yiiframework.com/extension/cal/

http://arshaw.com/fullcalendar/

public function actionList($start = 0, $end = 0)
{
    if ((Yii::app()->request->isAjaxRequest) and (Yii::app()->user->hasState('calUserId')) )
    {
        $criteria = new CDbCriteria(array(
                    'condition' => 'user_id=:user_id',
                    'params'=>array(':user_id'=> Yii::app()->user->getState('calUserId')),
                ));
        $criteria->addBetweenCondition('start', $start, $end);
        $events = Event::model()->findAll($criteria);
        echo CJSON::encode($events);
        Yii::app()->end();
    }
}

这是否来自 fullcalendar.min.js 脚本?它似乎被调用的唯一地方是在 eventCal.js 中:

var defaultCalendarOptions = {
        events: params.baseUrl+'list',

变量是否曾经使用 Yii 模块传入,或者它们总是 $start=0,$end=0?如果他们通过了,请解释如何...

4

1 回答 1

1

$start$end变量实际上$_GET是传递给方法的参数actionList。Yii 框架经常这样做——如果一个动作方法有参数,它会寻找$_GET同名的参数并传递这些参数。

您很好地假设该events: params.baseUrl+'list'行用于此目的,但发送 GET 请求的实际代码段深埋在 fullcalendar.js 文件中:

$.ajax($.extend({}, ajaxDefaults, source, {
    data: data,
    ...

在这段代码中,sourceevents上面的参数,它被传递给实际的完整日历脚本,并且是一个带有和参数data的数组。您可以在此处找到脚本的完整源代码。您使用的扩展只有缩小版。startend

于 2012-08-05T20:20:56.823 回答