Class kartik\select2\Select2
Select2 widget is a Yii2 wrapper for the Select2 jQuery plugin. This input widget is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. The widget is specially styled for all major Bootstrap releases 3.x, 4.x & 5.x.
For example,
`
php
use kartik\select2\Select2;
// Normal select with ActiveForm & model echo $form->field($model, 'state_1')->widget(Select2::classname(), [
'data' => $data,
'language' => 'de',
'options' => ['placeholder' => 'Select a state ...'],
'pluginOptions' => [
'allowClear' => true
],
]);
// Multiple select without model echo Select2::widget([
'name' => 'state_2',
'value' => '',
'data' => $data,
'options' => ['multiple' => true, 'placeholder' => 'Select states ...']
]);
`
See also https://github.com/select2/select2.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$accesskey | string | Implements open selector with accesskey | kartik\select2\Select2 |
$addon | array | Addon to prepend or append to the widget (based on bootstrap input group styling). | kartik\base\AddonTrait |
$attribute | string|null | The model attribute that this widget is associated with. | yii\widgets\InputWidget |
$autoIdPrefix | string | The prefix to the automatically generated widget IDs. | yii\base\Widget |
$baseSourcePath | string|false | Get parsed base source path based on $sourcePath setting. If $sourcePath is not set, it will return the current working directory of this widget class. | kartik\base\WidgetTrait |
$behaviors | yii\base\Behavior[] | List of behaviors attached to this component. | yii\base\Component |
$bsColCssPrefixes | array | The bootstrap grid column css prefixes mapping, the key is the bootstrap versions, and the value is an array containing the sizes and their corresponding grid column css prefixes. | kartik\base\BootstrapTrait |
$bsCssMap | array | CSS conversion mappings across bootstrap library versions. | kartik\base\BootstrapTrait |
$bsExtBasename | integer | The yii2 bootstrap extension base name (readonly property available via getter method getBsExtBasename()) | kartik\base\BootstrapTrait |
$bsVer | integer | Bootstrap version number currently set (readonly property available via getter method getBsVer()) | kartik\base\BootstrapTrait |
$bsVersion | integer|string | The bootstrap library version that you wish to use for this specific extension / widget. | kartik\base\BootstrapTrait |
$changeOnReset | boolean | Whether to trigger change for Select2 input on form reset so the Select2 value is rightly reset. | kartik\select2\Select2 |
$convertFormat | boolean | Whether the widget should automatically format the date from the PHP DateTime format to the javascript/jquery plugin format. | kartik\base\InputWidget |
$counter | integer | A counter used to generate $id for widgets. | yii\base\Widget |
$data | array | The option data items. | kartik\select2\Select2 |
$defaultBtnCss | string | Default bootstrap button CSS (readonly property available via getter method getDefaultBtnCss()) | kartik\base\BootstrapTrait |
$defaultIconPrefix | string | Default icon prefix (readonly property available via getter method getDefaultIconPrefix()) | kartik\base\BootstrapTrait |
$defaultOptions | array | Default HTML attributes or other settings for widgets. | kartik\base\WidgetTrait |
$defaultPluginOptions | array | Default plugin options for the widget | kartik\base\WidgetTrait |
$disabled | boolean | Whether input is to be disabled | kartik\base\InputWidget |
$dropdownClass | string | Bootstrap dropdown class name based on currently configured bootstrap version (readonly property available via getter method getDropdownClass()) | kartik\base\BootstrapTrait |
$field | yii\widgets\ActiveField | Active input field, which triggers this widget rendering. | yii\widgets\InputWidget |
$hashVarLoadPosition | integer | The position where the client JS hash variables for the input widget will be loaded. | kartik\base\WidgetTrait |
$hideSearch | boolean | Whether to hide the search control and render it as a simple select. | kartik\select2\Select2 |
$i18n | array | The the internalization configuration for this widget. | kartik\base\TranslationTrait |
$id | string|null | ID of the widget. Note that the type of this property differs in getter and setter. See getId() and setId() for details. | yii\base\Widget |
$initValueText | string|\kartik\select2\array, | The displayed text in the dropdown for the initial value when you do not set or provide
data (e.g. using with ajax). |
kartik\select2\Select2 |
$language | string | The locale ID (e.g. 'fr', 'de') for the language to be used by the Select2 Widget. | kartik\select2\Select2 |
$maintainOrder | boolean | Whether to maintain the order of tag / option selected for a multiple select | kartik\select2\Select2 |
$model | yii\base\Model|null | The data model that this widget is associated with. | yii\widgets\InputWidget |
$moduleId | string | The module identifier if this widget is part of a module. | kartik\base\WidgetTrait |
$name | string|null | The input name. | yii\widgets\InputWidget |
$options | array | The HTML attributes for the input tag. | kartik\select2\Select2 |
$pjaxContainerId | string | The identifier for the PJAX widget container if the widget is to be rendered inside a PJAX container. | kartik\base\WidgetTrait |
$pjaxDuplicationFix | boolean | Prevent duplication of pjax containers when browser back & forward buttons are pressed. | kartik\base\WidgetTrait |
$pluginDestroyJs | string | The javascript that will be used to destroy the jQuery plugin | kartik\base\WidgetTrait |
$pluginEvents | array | Widget JQuery events. | kartik\base\WidgetTrait |
$pluginLoading | boolean | Show loading indicator while plugin loads | kartik\base\InputWidget |
$pluginName | string | The name of the jQuery plugin | kartik\select2\Select2 |
$pluginOptions | array | Widget plugin options. | kartik\base\WidgetTrait |
$readonly | boolean | Whether input is to be readonly | kartik\base\InputWidget |
$showToggleAll | boolean | Whether to show the toggle all button for selection all options in a multiple select. | kartik\select2\Select2 |
$size | string | Size of the Select2 input, must be one of the kartik\select2\Select2::LARGE, kartik\select2\Select2::MEDIUM or kartik\select2\Select2::SMALL. | kartik\select2\Select2 |
$sourcePath | string | Directory path to the original widget source. | kartik\base\WidgetTrait |
$stack | yii\base\Widget[] | The widgets that are currently being rendered (not ended). | yii\base\Widget |
$theme | string | The theme name to be used for styling the Select2. | kartik\select2\Select2 |
$toggleAllSettings | array | The toggle all button settings for selecting/unselecting all the options. | kartik\select2\Select2 |
$value | string | The input value. | yii\widgets\InputWidget |
$view | yii\web\View | The view object that can be used to render views or view files. Note that the type of this property differs in getter and setter. See getView() and setView() for details. | yii\base\Widget |
$viewPath | string | The directory containing the view files for this widget. | yii\base\Widget |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
$_bsVer | integer | Current bootstrap version number | kartik\base\BootstrapTrait |
$_dataVar | string | The HTML5 data variable name that will be used to store the Json encoded pluginOptions within the element on which the jQuery plugin will be initialized. | kartik\base\WidgetTrait |
$_defaultBtnCss | string | Default bootstrap button CSS | kartik\base\BootstrapTrait |
$_defaultIconPrefix | string | Default icon CSS prefix | kartik\base\BootstrapTrait |
$_encOptions | string | The JSON encoded plugin options. | kartik\base\WidgetTrait |
$_hashVar | string | The generated hashed variable name that will store the JSON encoded pluginOptions in yii\web\View::POS_HEAD. | kartik\base\WidgetTrait |
$_inbuiltThemes | array | List of inbuilt themes | kartik\select2\Select2 |
$_isBs4 | boolean | Flag to detect whether bootstrap 4. | kartik\base\BootstrapTrait |
$_lang | string | The two or three letter lowercase code for the language according to ISO-639. | kartik\base\InputWidget |
$_langFile | string | The language js file. | kartik\base\InputWidget |
$_loadIndicator | string | The indicator to be displayed while plugin is loading. | kartik\base\InputWidget |
$_msgCat | string | Translation message file category name for i18n. | kartik\select2\Select2 |
$_s2OptionsVar | string | The variable that will store additional options for Select2 to add enhanced features after the plugin is loaded and initialized. | kartik\select2\Select2 |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\Component |
__clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component |
__construct() | Constructor. | yii\base\BaseObject |
__get() | Returns the value of a component property. | yii\base\Component |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component |
__set() | Sets the value of a component property. | yii\base\Component |
__unset() | Sets a component property to be null. | yii\base\Component |
addCssClass() | Adds bootstrap CSS class to options by parsing the bootstrap version for the specified Bootstrap CSS type. | kartik\base\BootstrapTrait |
afterRun() | This method is invoked right after a widget is executed. | yii\base\Widget |
attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
beforeRun() | This method is invoked right before the widget is executed. | yii\base\Widget |
begin() | Begins a widget. | yii\base\Widget |
behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
end() | Ends a widget. | yii\base\Widget |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
getBSClass() | Gets the respective Bootstrap class based on currently configured bootstrap version. | kartik\base\BootstrapTrait |
getBaseSourcePath() | Get parsed base source path based on $sourcePath setting. If $sourcePath is not set, it will return the current working directory of this widget class. | kartik\base\WidgetTrait |
getBehavior() | Returns the named behavior object. | yii\base\Component |
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
getBsVer() | Gets the current set bootstrap version number. | kartik\base\BootstrapTrait |
getCssClass() | Gets bootstrap css class by parsing the bootstrap version for the specified BS CSS type. | kartik\base\BootstrapTrait |
getDefaultBtnCss() | Gets the default button CSS | kartik\base\BootstrapTrait |
getDefaultIconPrefix() | Gets the default icon css prefix | kartik\base\BootstrapTrait |
getDropdownClass() | Gets the respective bootstrap dropdown class name based on currently configured bootstrap version. | kartik\base\BootstrapTrait |
getId() | Returns the ID of the widget. | yii\base\Widget |
getView() | kartik\base\WidgetTrait | |
getViewPath() | Returns the directory containing the view files for this widget. | yii\base\Widget |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
init() | Initializes the widget. | kartik\base\InputWidget |
initI18N() | Yii i18n messages configuration for generating translations | kartik\base\TranslationTrait |
isBs() | Validate Bootstrap version | kartik\base\BootstrapTrait |
isBs4() | Validate if Bootstrap 4.x version. | kartik\base\BootstrapTrait |
off() | Detaches an existing event handler from this component. | yii\base\Component |
on() | Attaches an event handler to an event. | yii\base\Component |
registerAssetBundle() | Registers the asset bundle and locale | kartik\select2\Select2 |
registerAssets() | Registers the client assets for kartik\select2\Select2 widget. | kartik\select2\Select2 |
registerWidgetJs() | Registers a JS code block for the widget. | kartik\base\WidgetTrait |
removeCssClass() | Removes bootstrap CSS class from options by parsing the bootstrap version for the specified Bootstrap CSS type. | kartik\base\BootstrapTrait |
render() | Renders a view. | yii\base\Widget |
renderFile() | Renders a view file. | yii\base\Widget |
renderWidget() | Initializes and renders the widget | kartik\select2\Select2 |
run() | Executes the widget. | kartik\select2\Select2 |
setId() | Sets the ID of the widget. | yii\base\Widget |
setView() | Sets the view object to be used by this widget. | yii\base\Widget |
trigger() | Triggers an event. | yii\base\Component |
widget() | Creates a widget instance and runs it. | yii\base\Widget |
Protected Methods
Method | Description | Defined By |
---|---|---|
addAsset() | Adds an asset to the view. | kartik\base\WidgetTrait |
configureBsVersion() | Configures the bootstrap version settings | kartik\base\BootstrapTrait |
convertDateFormat() | Automatically convert the date format from PHP DateTime to Javascript DateTime format | kartik\base\InputWidget |
embedAddon() | Embeds the input group addon | kartik\select2\Select2 |
fixPjaxDuplication() | Fix for weird PJAX container duplication behavior on pressing browser back and forward buttons. | kartik\base\WidgetTrait |
getAddonContent() | Parses and returns addon content. | kartik\base\AddonTrait |
getBsExtBasename() | The yii2-bootstrap extension base name. | kartik\base\BootstrapTrait |
getInput() | Generates an input. | kartik\base\InputWidget |
getPluginScript() | Returns the plugin registration script. | kartik\base\WidgetTrait |
hasModel() | yii\widgets\InputWidget | |
hashPluginOptions() | Generates a hashed variable to store the pluginOptions. | kartik\base\WidgetTrait |
initBsVersion() | Initializes bootstrap versions for the widgets and asset bundles. | kartik\base\BootstrapTrait |
initDestroyJs() | Generates the pluginDestroyJs script if it is not set. |
kartik\base\WidgetTrait |
initDisability() | Validates and sets disabled or readonly inputs. | kartik\base\InputWidget |
initInputWidget() | Initializes the input widget. | kartik\base\InputWidget |
initLanguage() | Initialize the plugin language. | kartik\base\InputWidget |
initPlaceholder() | Initializes the placeholder for Select2 | kartik\select2\Select2 |
isRequired() | kartik\select2\Select2 | |
isSameVersion() | Compares two versions and checks if they are of the same major BS version. | kartik\base\BootstrapTrait |
mergeDefaultOptions() | Merge default options | kartik\base\WidgetTrait |
parseBool() | Parses the variable for boolean value and returns a right JS expression | kartik\select2\Select2 |
parseDateFormat() | Parses and sets plugin date format based on attribute type using yii\helpers\FormatConverter. Currently this method is used only within the kartik\date\DatePicker and \kartik\datetime\DateTimePicker\ widgets. | kartik\base\InputWidget |
parseVer() | Parses and returns the major BS version | kartik\base\BootstrapTrait |
registerPlugin() | Registers a specific plugin and the related events | kartik\base\WidgetTrait |
registerPluginOptions() | Registers plugin options by storing within a uniquely generated javascript variable. | kartik\base\WidgetTrait |
renderAddonItem() | Renders an addon item based on its configuration | kartik\base\AddonTrait |
renderInput() | Renders the source Input for the Select2 plugin. Graceful fallback to a normal HTML select dropdown or text input - in case JQuery is not supported by the browser | kartik\select2\Select2 |
renderInputHtml() | Render a HTML input tag. | yii\widgets\InputWidget |
renderToggleAll() | Initializes and render the toggle all button | kartik\select2\Select2 |
setDataVar() | Sets a HTML5 data variable. | kartik\base\WidgetTrait |
setLanguage() | Sets the language JS file if it exists. | kartik\base\InputWidget |
Events
Event | Type | Description | Defined By |
---|---|---|---|
EVENT_AFTER_RUN | yii\base\WidgetEvent | An event raised right after executing a widget. (available since version 2.0.11) | yii\base\Widget |
EVENT_BEFORE_RUN | yii\base\WidgetEvent | An event raised right before executing a widget. (available since version 2.0.11) | yii\base\Widget |
EVENT_INIT | yii\base\Event | An event that is triggered when the widget is initialized via init(). (available since version 2.0.11) | yii\base\Widget |
Constants
Constant | Value | Description | Defined By |
---|---|---|---|
LARGE | 'lg' | Select2 large input size | kartik\select2\Select2 |
LOAD_PROGRESS | ' |
kartik\base\InputWidget | |
MEDIUM | 'md' | Select2 medium input size (default) | kartik\select2\Select2 |
SMALL | 'sm' | Select2 small input size | kartik\select2\Select2 |
THEME_BOOTSTRAP | 'bootstrap' | Select2 Bootstrap theme | kartik\select2\Select2 |
THEME_CLASSIC | 'classic' | Select2 classic theme | kartik\select2\Select2 |
THEME_DEFAULT | 'default' | Select2 default theme | kartik\select2\Select2 |
THEME_KRAJEE | 'krajee-bs3' | Select2 Krajee theme (default for BS3) Deprecated since v2.2.4 | kartik\select2\Select2 |
THEME_KRAJEE_BS3 | 'krajee-bs3' | Select2 Krajee theme (default for BS3) | kartik\select2\Select2 |
THEME_KRAJEE_BS4 | 'krajee-bs4' | Select2 Krajee theme (default for BS4) | kartik\select2\Select2 |
THEME_KRAJEE_BS5 | 'krajee-bs5' | Select2 Krajee theme (default for BS5) | kartik\select2\Select2 |
THEME_MATERIAL | 'material' | Select2 Material Theme | kartik\select2\Select2 |
Property Details
List of inbuilt themes
self::THEME_DEFAULT,
self::THEME_CLASSIC,
self::THEME_BOOTSTRAP,
self::THEME_KRAJEE_BS3,
self::THEME_KRAJEE_BS4,
self::THEME_KRAJEE_BS5,
self::THEME_MATERIAL
]
Translation message file category name for i18n.
The variable that will store additional options for Select2 to add enhanced features after the
plugin is loaded and initialized. This variable name will be stored as a data attribute data-s2-options
within the base select input options.
Implements open selector with accesskey
Whether to trigger change for Select2 input on form reset so the Select2 value is rightly reset.
The option data items. The array keys are option values, and the array values are the corresponding option labels. The array can also be nested (i.e. some array values are arrays too). For each sub-array, an option group will be generated whose label is the key associated with the sub-array. If you have a list of data models, you may convert them into the format described above using yii\helpers\ArrayHelper::map().
Whether to hide the search control and render it as a simple select.
The displayed text in the dropdown for the initial value when you do not set or provide
data
(e.g. using with ajax). If options['multiple'] is set to true
, you can set this as an array of text
descriptions for each item in the dropdown value
.
The locale ID (e.g. 'fr', 'de') for the language to be used by the Select2 Widget. If this property not set, then the current application language will be used.
Whether to maintain the order of tag / option selected for a multiple select
The HTML attributes for the input tag. The following options are important:
multiple
: boolean, whether multiple or single item should be selected. Defaults to false.placeholder
: string, placeholder for the select item.
The name of the jQuery plugin
Whether to show the toggle all button for selection all options in a multiple select.
Size of the Select2 input, must be one of the kartik\select2\Select2::LARGE, kartik\select2\Select2::MEDIUM or kartik\select2\Select2::SMALL.
The theme name to be used for styling the Select2. If not set this will default to:
- THEME_KRAJEE_BS3 if $bsVersion is set to '3.x'
- THEME_KRAJEE_BS4 if $bsVersion is set to '4.x'
- THEME_KRAJEE_BS5 if $bsVersion is set to '5.x'
The toggle all button settings for selecting/unselecting all the options. This is applicable only for multiple select. The following array key properties can be set:
selectLabel
: string, the markup to be shown to select all records. Defaults to:<i class="glyphicon glyphicon-unchecked"></i> Select all
.unselectLabel
: string, the markup to be shown to unselect all records. Defaults to:<i class="glyphicon glyphicon-checked"></i> Unselect all
.selectOptions
: array, the HTML attributes for the container wrapping the select label. Defaults to[]
.unselectOptions
: array, the HTML attributes for the container wrapping the unselect label. Defaults to[]
.options
: array, the HTML attributes for the toggle button container. Defaults to:['class' => 's2-togall-button']
.
Method Details
Embeds the input group addon
protected string embedAddon ( $input ) | ||
$input | string | |
throws | yii\base\InvalidConfigException | |
---|---|---|
throws | Exception |
Initializes the placeholder for Select2
protected void initPlaceholder ( ) | ||
throws | Exception |
---|
protected boolean isRequired ( ) |
Parses the variable for boolean value and returns a right JS expression
protected static yii\web\JsExpression parseBool ( $var ) | ||
$var | mixed | The variable value to parse |
Registers the asset bundle and locale
public void registerAssetBundle ( ) |
Registers the client assets for kartik\select2\Select2 widget.
public void registerAssets ( ) |
Renders the source Input for the Select2 plugin. Graceful fallback to a normal HTML select dropdown or text input - in case JQuery is not supported by the browser
protected void renderInput ( ) | ||
throws | yii\base\InvalidConfigException |
---|
Initializes and render the toggle all button
protected void renderToggleAll ( ) | ||
throws | Exception |
---|
Initializes and renders the widget
public void renderWidget ( ) | ||
throws | ReflectionException | |
---|---|---|
throws | yii\base\InvalidConfigException | |
throws | Exception |
Executes the widget.
public string|void run ( ) | ||
return | string|void | The rendering result may be directly "echoed" or returned as a string |
---|---|---|
throws | ReflectionException | |
throws | yii\base\InvalidConfigException |