silentlun/yii2-daterangepicker

YII2的DateRangePicker扩展

安装: 11

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

1.2 2022-08-09 02:33 UTC

This package is not auto-updated.

Last update: 2024-10-01 13:23:34 UTC


README

YII2的DateRangePicker扩展

安装

安装此扩展的首选方法是使用composer

运行以下命令之一:

php composer require --prefer-dist silentlun/yii2-daterangepicker "*"

或者在您的composer.json文件的require部分添加:

"silentlun/yii2-daterangepicker": "*"

使用方法

扩展安装后,只需在代码中使用

use silentlun\daterange\DateRangePicker;
echo DateRangePicker::widget([
    'name' => 'daterange',
    'attribute' => 'datetime_range',
    'pluginOptions' => [
        'timePicker' => true,
        'locale' => [
            'format' => 'YYYY-MM-DD'
        ]
    ]
]);

或者在模型上使用

use silentlun\daterange\DateRangePicker;
echo DateRangePicker::widget([
    'model' => $model,
    'attribute' => 'datetime_range',
    'pluginOptions' => [
        'timePicker' => true,
        'locale' => [
            'format'=>'YYYY-MM-DD'
        ]
    ]
]);

或者在模型上使用单独的start/end属性

use silentlun\daterange\DateRangePicker;
echo DateRangePicker::widget([
    'model'=>$model,
    'attribute'=>'datetime_range',
    'startAttribute'=>'datetime_start',
    'endAttribute'=>'datetime_end',
    'pluginOptions'=>[
        'timePicker'=>true,
        'timePickerIncrement'=>30,
        'locale'=>[
            'format'=>'YYYY-MM-DD'
        ]
    ]
]);

DateRangeBehavior

use silentlun\daterange\DateRangeBehavior;

class UserSearch extends User
{
    public $createTimeRange;
    public $createTimeStart;
    public $createTimeEnd;

    public function behaviors()
    {
        return [
            [
                'class' => DateRangeBehavior::className(),
                'attribute' => 'createTimeRange',
                'dateStartAttribute' => 'createTimeStart',
                'dateEndAttribute' => 'createTimeEnd',
            ]
        ];
    }

    public function rules()
    {
        return [
            // ...
            [['createTimeRange'], 'match', 'pattern' => '/^.+\s\-\s.+$/'],
        ];
    }

    public function search($params)
    {
        $query = User::find();
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);
        $this->load($params);
        if (!$this->validate()) {
            $query->where('0=1');
            return $dataProvider;
        }

        $query->andFilterWhere(['>=', 'createdAt', $this->createTimeStart])
              ->andFilterWhere(['<', 'createdAt', $this->createTimeEnd]);

        return $dataProvider;
    }
}