Class kartik\select2\Select2

Inheritancekartik\select2\Select2 » kartik\base\InputWidget » yii\widgets\InputWidget » yii\base\Widget » yii\base\Component » yii\base\BaseObject
Implementskartik\base\BootstrapInterface, yii\base\Configurable, yii\base\ViewContextInterface
Uses Traitskartik\base\AddonTrait, kartik\base\BootstrapTrait, kartik\base\TranslationTrait, kartik\base\WidgetTrait
Subclasseskartik\widgets\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

Hide inherited properties

PropertyTypeDescriptionDefined 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

Hide inherited properties

PropertyTypeDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined 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

Hide inherited events

EventTypeDescriptionDefined 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

Hide inherited constants

ConstantValueDescriptionDefined 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

$_inbuiltThemes protected static property

List of inbuilt themes

protected static array $_inbuiltThemes = [
    self::THEME_DEFAULT,
    
self::THEME_CLASSIC,
    
self::THEME_BOOTSTRAP,
    
self::THEME_KRAJEE_BS3,
    
self::THEME_KRAJEE_BS4,
    
self::THEME_KRAJEE_BS5,
    
self::THEME_MATERIAL
]
$_msgCat protected property

Translation message file category name for i18n.

protected string $_msgCat 'kvselect'
$_s2OptionsVar protected property

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.

protected string $_s2OptionsVar null
$accesskey public property

Implements open selector with accesskey

public string $accesskey null
$changeOnReset public property

Whether to trigger change for Select2 input on form reset so the Select2 value is rightly reset.

public boolean $changeOnReset true
$data public property

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().

public array $data null
$hideSearch public property

Whether to hide the search control and render it as a simple select.

public boolean $hideSearch false
$initValueText public property

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.

public string|\kartik\select2\array, $initValueText null
$language public property

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.

public string $language null
$maintainOrder public property

Whether to maintain the order of tag / option selected for a multiple select

public boolean $maintainOrder false
$options public property

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.
public array $options = []
$pluginName public property

The name of the jQuery plugin

public string $pluginName 'select2'
$showToggleAll public property

Whether to show the toggle all button for selection all options in a multiple select.

public boolean $showToggleAll true
$size public property
public string $size self::MEDIUM
$theme public property

The theme name to be used for styling the Select2. If not set this will default to:

public string $theme null
$toggleAllSettings public property

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

embedAddon() protected method

Embeds the input group addon

protected string embedAddon ( $input )
$input string
throws yii\base\InvalidConfigException
throws Exception
initPlaceholder() protected method

Initializes the placeholder for Select2

protected void initPlaceholder ( )
throws Exception
isRequired() protected method

protected boolean isRequired ( )
parseBool() protected static method

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

registerAssetBundle() public method

Registers the asset bundle and locale

public void registerAssetBundle ( )
registerAssets() public method

Registers the client assets for kartik\select2\Select2 widget.

public void registerAssets ( )
renderInput() protected method

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
renderToggleAll() protected method

Initializes and render the toggle all button

protected void renderToggleAll ( )
throws Exception
renderWidget() public method

Initializes and renders the widget

public void renderWidget ( )
throws ReflectionException
throws yii\base\InvalidConfigException
throws Exception
run() public method

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