naduvko / yii2-calendarview-widget
为 Yii 2 框架 Bootstrap4 提供的 CalendarView 小部件。
1.1.2
2019-08-27 07:51 UTC
Requires
- yiisoft/yii2: ~2.0.19
- yiisoft/yii2-bootstrap4: *
This package is auto-updated.
Last update: 2024-09-20 02:03:24 UTC
README
Yii2 CalendarView 小部件
关于
是否需要仅使用数据提供者和日期字段来以日历形式显示表记录?使用 Bootstrap 3 和 jQuery 创建响应式日历小部件,可以显示任意数量的事件。
现在已支持7种语言(斯洛伐克语、捷克语、德语、英语、西班牙语、俄语和波兰语)的本地化,请发送拉取请求以提供更多翻译。
安装
通过 composer 安装此扩展是首选方式。
运行以下命令:
php composer.phar require --prefer-dist naduvko/yii2-calendarview-widget "^1.0"
或添加以下内容到您的 composer.json
文件的 require 部分中:
"naduvko/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 naduvko\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/naduvko/yii2-calendarview-widget/views/calendar', 'month' => '@vendor/naduvko/yii2-calendarview-widget/views/month', 'day' => '@vendor/naduvko/yii2-calendarview-widget/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>'; }, */ ] );