- Select2 Extension for Yii 1.1.15 (not tested with higher versions)
- Whats new
- Supported Events
- Installation
- Follow on github
- Usage
- Example:
- Advanced
- Initialize options with javascript function or expressions
- Binding Events Examples with dropdown list
Select2 Extension for Yii 1.1.15 (not tested with higher versions) ¶
Extension to use jQuery Plugin Select2 in Yii application.
courtesy Select2 script: Ivan berg Selec2
Whats new ¶
Event binding support for select2 yii extension no need to write any line of javascript configure the whole dropdow via select2 extension
Supported Events ¶
change ¶
select2-opening ¶
select2-open ¶
select2-close ¶
select2-highlight ¶
select2-selecting ¶
select2-clearing ¶
select2-removing ¶
select2-removed ¶
select2-loaded ¶
select2-focus ¶
select2-blur ¶
Installation ¶
Download or clone this repository and paste in /protected/extensions/select2
Follow on github ¶
Usage ¶
Direct import into page
Yii::import('ext.select2.Select2');
Or in config to make it avaiable overall site
...
'import' => array(
    ...
    'ext.select2.Select2',
    ...
),
...
Example: ¶
Simple call `Select2::dropDownList()` Model reference `Select2::activeDropDownList()`
Advanced ¶
    ...
    echo Select2::multiSelect("test", '', array('Apple','Banana','Orange','Apricot','Black Current'), 
        array(
            'required' => 'required',
            'select2Options' => array(
              'placeholder' => 'Please select a fruit',
              'maximumSelectionSize' => 4,
            ),
        )
    );
    ...
    echo Select2::activeMultiSelect($model, "attr", array('test1','test2'), array(
        'placeholder' => 'This is a placeholder',
    ));
    ...
Or this
    ...
    $this->widget('Select2', array(
       'name' => 'exampleInput',
       'value' => 1,
       'data' => array(
           1 => 'Apple',
           2 => 'Banana',
           3 => 'Orange',
           4 => 'Apricot',
        ),
    ));
    ...
Initialize options with javascript function or expressions ¶
Example populating text field with ajax support
...
echo Select2::dropDownList('location', '', array(), array(
  'empty'=>'',
  'id'=>'location',
  'style'=>'width:100%',
  'select2Options'=>array(
      'allowClear'=>true,
      'placeholder'=>'Type Location Here',
       'minimumInputLength'=>'3',
      'ajax'=>array(
          'url'=>'/homes/locationsajax/',
          'type'=>'GET',
          'dataType'=>'jsonp',
'data'=>new CJavaScriptExpression('function (term, page) {return {loc_name: term, page:page}}'), 'results'=>new CJavaScriptExpression('function (data, page) {return {results: data.locations}}'),
      ),
      'initSelection'=>new CJavaScriptExpression('function(element, callback) { '
                . 'var id=jQuery(element).val(); '
                . 'if (id!=="") {'
                . ' jQuery.ajax("/homes/locationsajax/loc_id/"+id, { dataType: "jsonp" } ).done( function(data) {'
                . 'callback(data);'
                . '});'
                . '}}'),
      'formatResult'=> new CJavaScriptExpression('locationFormatResult'),
      'formatSelection'=>new CJavaScriptExpression('locationFormatSelection'),
      'escapeMarkup'=>new CJavaScriptExpression('function (m) {return m;}'),
      )
)
                        );
...
  ...
  $('#location').select2(
            {
            'allowClear':true,
            'placeholder':'Type Location Here',
            'minimumInputLength':'3',
            'ajax':{
                'url':'/homes/locationsajax/',
                'type':'GET',
                'dataType':'jsonp',
                'data':function (term, page) {return {loc_name: term, page:page}},
                'results':function (data, page) {return {results:  data.locations}}},
                'initSelection':function(element, callback) { 
                    var id=jQuery(element).val(); 
                    if (id!=="") { 
                      jQuery.ajax("/homes/locationsajax/loc_id/"+id, { dataType: "jsonp" } )
                      .done( function(data) {
                              callback(data)
                              }
                        );
                    }
                  },
                  'formatResult':locationFormatResult,
                  'formatSelection':locationFormatSelection,
                  'escapeMarkup':function (m) {return m;}
            }
  );
  ...
Binding Events Examples with dropdown list ¶
A dropdown example triggering the events "select2-selecting" and "select2-removed" which fire on selecting a choice and clearing a choice
...
echo Select2::dropDownList('area_type', '', 
            array('sqft'=>'Square Feet','marla'=>'Marlas'),
            array('empty'=>'','id'=>'area_type','style'=>'width:100%',
                'select2Options'=>array(
                    'allowClear'=>true,
                    'placeholder'=>'Unit Type',
                    'onTrigger'=>array(
'select2-selecting'=>new CJavaScriptExpression('function(e) { console.log(e.object.id);}'),
'select2-removed'=>new CJavaScriptExpression('function(e) { console.log(e.choice.text);}'),
                    )
                    ),
                )
            );
...
The following javascript is rendered when you run the above piece of code
  ...
   $('#area_type').select2(
  {
    'allowClear':true,
    'placeholder':'Unit Type'
  }
)
.on('select2-selecting',function(e) { console.log(e.object.id);})
.on('select2-removed',function(e) { console.log(e.choice.text);});
...
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.