PHP code example of understeam / yii2-calendar-widget

1. Go to this page and download the library: Download understeam/yii2-calendar-widget library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

understeam / yii2-calendar-widget example snippets



namespace app\models;

use understeam\calendar\ItemInterface;
use understeam\calendar\ActiveRecordItemTrait;

class Event extends \yii\db\ActiveRecord implements ItemInterface
{
    use ActiveRecordItemTrait;
}

'components' => [
    'calendar' => [
        'class' => 'understeam\calendar\ActiveRecordCalendar',  // Имя класса календаря
        'modelClass' => 'app\models\Event',                     // Имя класса модели
        'dateAttribute' => 'date',                              // Атрибут модели, в котором хранится дата (тип в БД timestamp или datetime)
        'dateRange' => [time() + 86400, time() + 2592000]       // период, в который будет доступно событие onClick
        // Так же в dateRange можно передать функцию, которая должна вернуть нужный массив в случае если нужны динамические вычисления
        // 'dateRange' => ['app\models\User', 'getCalendarRange'],
        'filter' => [ // Фильтр ActiveQuery, который будет применён. Возможно указывать callable для фильтрации
            'status' => 1,
        ],
        // Пример
        // 'filter' => function ($query, $startTime, $endTime) {
        //     return $query->andWhere(['userId' => Yii::$app->user->id]);
        // },
        // Или так
        // 'filter' => ['app\models\User', 'filterCalendarQuery'],
    ],
],

public function actions() {
    return [
        'calendar' => [
            'class' => 'understeam\calendar\CalendarAction',
            'calendar' => 'calendar',           // ID компонента календаря (да, можно подключать несколько)
            'usePjax' => true,                  // Использовать ли pjax для ajax загрузки страниц
            'widgetOptions' => [                // Опции виджета (см. CalendarWidget)
                'clientOptions' => [            // Опции JS плагина виджета
                    'onClick' => new JsExpression('showPopup'),   // JS функция, которая будет выполнена при клике на доступное время
                    'onFutureClick' => new JsExpression('buyPlan'),
                    'onPastClick' => new JsExpression('showError'),
                    // Все эти функции принимают 2 параметра: date и time
                    // Для тестирования можно использовать следующий код:
                    // 'onClick' => new JsExpression("function(d,t){alert([d,t].join(' '))}")
                ],
            ],
        ],
    ];
}