inquid /
为 Yii 2 框架的日历视图小部件。
v1.0.1
2016-09-12 01:41 UTC
Requires
This package is auto-updated.
Last update: 2024-08-29 04:43:02 UTC
README
Yii2 CalendarView 小部件
关于
是否曾需要仅使用数据提供者和日期字段将表格记录显示为日历视图?使用 Bootstrap 3 和 jQuery 创建一个响应式的日历小部件,可显示任意数量的事件。
现在支持7种语言(斯洛伐克语、捷克语、德语、英语、西班牙语、俄语和波兰语)的本地化,请发送 pull requests 以进行更多翻译。
安装
安装此扩展的首选方式是通过 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>'; }, */ ] );