PHPackages                             vanterbit/yii2-date-range - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. vanterbit/yii2-date-range

ActiveYii2-extension[Utility &amp; Helpers](/categories/utility)

vanterbit/yii2-date-range
=========================

An advanced Yii 2 date range picker input for based on bootstrap-daterangepicker plugin.

v1.8.2(5y ago)0565BSD-3-ClauseJavaScript

Since Sep 24Pushed 5y agoCompare

[ Source](https://github.com/vanterbit/yii2-date-range)[ Packagist](https://packagist.org/packages/vanterbit/yii2-date-range)[ Docs](https://github.com/vanterbit/yii2-date-range)[ RSS](/packages/vanterbit-yii2-date-range/feed)WikiDiscussions master Synced today

READMEChangelog (3)Dependencies (1)Versions (30)Used By (0)

Installation
------------

[](#installation)

The preferred way to install this extension is through [composer](http://getcomposer.org/download/).

> Note: Check the [composer.json](https://github.com/kartik-v/yii2-date-range/blob/master/composer.json) for this extension's requirements and dependencies. Read this [web tip /wiki](http://webtips.krajee.com/setting-composer-minimum-stability-application/) on setting the `minimum-stability` settings for your application's composer.json.

Either run

```
$ php composer.phar require vanterbit/yii2-date-range "dev-master"

```

or add

```
"vanterbit/yii2-date-range": "dev-master"

```

to the `require` section of your `composer.json` file.

Usage
-----

[](#usage)

### DateRangePicker

[](#daterangepicker)

```
use vanterbit\daterange\DateRangePicker;
echo DateRangePicker::widget([
    'model'=>$model,
    'attribute'=>'datetime_range',
    'convertFormat'=>true,
    'pluginOptions'=>[
        'timePicker'=>true,
        'timePickerIncrement'=>30,
        'locale'=>[
            'format'=>'Y-m-d h:i A'
        ]
    ]
]);
```

or using seperate min/max attributes on model

```
use vanterbit\daterange\DateRangePicker;
echo DateRangePicker::widget([
    'model'=>$model,
    'attribute'=>'datetime_range',
    'convertFormat'=>true,
    'startAttribute'=>'datetime_min',
    'endAttribute'=>'datetime_max',
    'pluginOptions'=>[
        'timePicker'=>true,
        'timePickerIncrement'=>30,
        'locale'=>[
            'format'=>'Y-m-d h:i A'
        ]
    ]
]);
```

### DateRangeBehavior

[](#daterangebehavior)

```
use vanterbit\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(['
