Select2 for Yii2
Wrapper Widget to use jQuery Plugin Select2 in Yii2 application., (*1)
Select2 script:
https://github.com/ivaynberg/select2, (*2)
Installation
Download or clone this repository and paste in /PROJECT-ROOT/vendor/yiisoft/yii2-select2/yii/select2, (*3)
Configure this extension in /PROJECT-ROOT/vendor/yiisoft/extensions.php, (*4)
'yiisoft/yii2-typeahead' =>
    array (
        'name' => 'yiisoft/yii2-typeahead',
        'version' => '9999999-dev',
        'alias' =>
            array (
                    '@yii/typeahead' => $vendorDir . '/yiisoft/yii2-typeahead/yii/typeahead',
            ),
),, (*5)
Usage
In your view file (_form.php)
 $model,
                'attribute' => 'country_id',
                'clientOptions' => [
                    //'local' => [],
                    'name' => 'country_id',
                    'limit' => 1,
                    'valueKey' => 'text',
                    'remote' => [
                                  'url' => Yii::$app->urlManager->createAbsoluteUrl('data/country/findcountry'). '&term=%QUERY',
                                // 'cache' => false,
                                ],
                    'engine' => new yii\web\JsExpression('Hogan'),                  
                    'template' => ', (*6)
{{id}}{{text}} - {{id}}, (*7)
',
                        ],
                    'events' => [
                            'selected' => new yii\web\JsExpression("function(evt,data) {
                                                alert(data); 
                                    };"),
                            ],
        ]);
    ?>
Or in config
```php
    ...
    'import' => array(
        ...
        'ext.select2.Select2',
        ...
    ),
    ...
Example:
You can replace the 
CHtml::dropDownList() by Select2::dropDownList() 
CHtml::activeDropDownList() by Select2::activeDropDownList(), (*8)
Or, (*9)
    ...
    echo Select2::multiSelect("test", null, array('test1','test2'), array(
        'required' => 'required',
        'placeholder' => 'This is a placeholder',
        'select2Options' => array(
            'maximumSelectionSize' => 2,
        ),
    ));
    ...
    echo Select2::activeMultiSelect($model, "attr", array('test1','test2'), array(
        'placeholder' => 'This is a placeholder',
    ));
    ...
Or this, (*10)
    ...
    $this->widget('Select2', array(
       'name' => 'inputName',
       'value' => 2,
       'data' => array(
           1 => 'Option 1',
           2 => 'Option 2',
           3 => 'Option 3',
           4 => 'Option 4',
        ),
    ));
    ...