inquid /

为 Yii 2 框架的日历视图小部件。

安装: 291

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 6

类型:yii2-extension

v1.0.1 2016-09-12 01:41 UTC

This package is auto-updated.

Last update: 2024-08-29 04:43:02 UTC


README

Yii2 CalendarView 小部件

关于

是否曾需要仅使用数据提供者和日期字段将表格记录显示为日历视图?使用 Bootstrap 3 和 jQuery 创建一个响应式的日历小部件,可显示任意数量的事件。

现在支持7种语言(斯洛伐克语、捷克语、德语、英语、西班牙语、俄语和波兰语)的本地化,请发送 pull requests 以进行更多翻译。

CalendarView Widget

安装

安装此扩展的首选方式是通过 composer

运行以下命令:

php composer.phar require --prefer-dist marekpetras/yii2-calendarview-widget "^1.0"

或者将以下内容添加到您的 composer.json 文件的 require 部分中:

"marekpetras/yii2-calendarview-widget": "^1.0"

使用方法

要使用此小部件,您需要一个控制器和一个视图

假设您有一个包含标准模型和搜索提供者(实例化 \yii\data\DataProviderInterface)的表格,您可以在例如 GridView 中使用它

CREATE TABLE `calendar` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Date',
  `val` int(11) NOT NULL COMMENT 'Value',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8

models/Calendar.php

例如,只是一个标准的活动记录模型

class Calendar extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'calendar';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['date', 'val'], 'required'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'date' => 'Date',
            'val' => 'Value',
        ];
    }
}

models/search/CalendarSearch.php

只是一个标准的搜索提供者

class CalendarSearch extends Calendar
{
    public function search($params)
    {
        $query = Activity::find()->where(['user_id'=>Yii::$app->user->getId()]);

        $dataProvider = new ActiveDataProvider([
             'query' => $query,
             'pagination' => ['pageSize' => 30],
             'sort'=> ['defaultOrder' => ['start'=>SORT_DESC]]
         ]);

        if (!($this->load($params) && $this->validate())) {
            return $dataProvider;
        }

        $query->andFilterWhere([
            'id' => $this->id,
            'date' => $this->calories,
            'val' => $this->peak_heartrate,
        ]);

        return $dataProvider;
    }
}

然后您需要一个控制器

controllers/CalendarController.php

class CalendarController extends Controller
{
    public function actionIndex()
    {
        $searchModel = new CalendarSearch;
        $dataProvider = $searchModel->search(Yii::$app->request->getQueryParams());

        return $this->render('index', [
                'dataProvider' => $dataProvider
            ]);
    }
}

以及视图

views/calendar/index.php

use marekpetras\calendarview\CalendarView;

echo CalendarView::widget(
    [
        // mandatory
        'dataProvider'  => $dataProvider,
        'dateField'     => 'date',
        'valueField'    => 'val',


        // optional params with their defaults
        'unixTimestamp' => false, // indicate whether you use unix timestamp instead of a date/datetime format in the data provider
        'weekStart' => 1, // date('w') // which day to display first in the calendar
        'title'     => 'Calendar',

        'views'     => [
            'calendar' => '@vendor/marekpetras/yii2-calendarview-widget/views/calendar',
            'month' => '@vendor/inquid/yii2-calendar/views/month',
            'day' => '@vendor/inquid/yii2-calendar/views/day',
        ],

        'startYear' => date('Y') - 1,
        'endYear' => date('Y') + 1,

        'link' => false,
        /* alternates to link , is called on every models valueField, used in Html::a( valueField , link )
        'link' => 'site/view',
        'link' => function($model,$calendar){
            return ['calendar/view','id'=>$model->id];
        },
        */

        'dayRender' => false,
        /* alternate to dayRender
        'dayRender' => function($model,$calendar) {
            return '<p>'.$model->id.'</p>';
        },
        */

    ]
);