# Trait yii\bootstrap\BootstrapWidgetTrait

Implemented by

yii\apidoc\templates\bootstrap\SideNavWidget, yii\bootstrap\Alert, yii\bootstrap\Button, yii\bootstrap\ButtonDropdown, yii\bootstrap\ButtonGroup, yii\bootstrap\Carousel, yii\bootstrap\Collapse, yii\bootstrap\Dropdown, yii\bootstrap\InputWidget, yii\bootstrap\Modal, yii\bootstrap\Nav, yii\bootstrap\NavBar, yii\bootstrap\Progress, yii\bootstrap\Tabs, yii\bootstrap\ToggleButtonGroup, yii\bootstrap\Widget

Available since version | 2.0.6
Source Code | https://github.com/yiisoft/yii2-bootstrap/blob/master/BootstrapWidgetTrait.php

BootstrapWidgetTrait is the trait, which provides basic for all bootstrap widgets features.

Note: class, which uses this trait must declare public field named `options` with the array default value:

    class MyWidget extends \yii\base\Widget
    {
        use BootstrapWidgetTrait;

        public $options = [];
    }

This field is not present in the trait in order to avoid possible PHP Fatal error on definition conflict.

## Public Properties

Hide inherited properties

Property | Type | Description | Defined By
--- | --- | --- | ---
$clientEvents | array | The event handlers for the underlying Bootstrap JS plugin. | yii\bootstrap\BootstrapWidgetTrait
$clientOptions | array | The options for the underlying Bootstrap JS plugin. | yii\bootstrap\BootstrapWidgetTrait

## Public Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
getView() |  | yii\bootstrap\BootstrapWidgetTrait
init() | Initializes the widget. | yii\bootstrap\BootstrapWidgetTrait

## Protected Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
registerClientEvents() | Registers JS event handlers that are listed in $clientEvents. | yii\bootstrap\BootstrapWidgetTrait
registerPlugin() | Registers a specific Bootstrap plugin and the related events | yii\bootstrap\BootstrapWidgetTrait

## Property Details

Hide inherited properties

$clientEvents public property

The event handlers for the underlying Bootstrap JS plugin. Please refer to the corresponding Bootstrap plugin Web page for possible events. For example, this page shows how to use the "Modal" plugin and the supported events (e.g. "shown").

public array $clientEvents = []
$clientOptions public property

The options for the underlying Bootstrap JS plugin. Please refer to the corresponding Bootstrap plugin Web page for possible options. For example, this page shows how to use the "Modal" plugin and the supported options (e.g. "remote").

public array $clientOptions = []

## Method Details

Hide inherited methods

getView() public abstract method

See also yii\base\Widget::getView().

public abstract yii\web\View getView ( )
return | yii\web\View | The view object that can be used to render views or view files.

Source code

                    abstract function getView();

init() public method

Initializes the widget.

This method will register the bootstrap asset bundle. If you override this method, make sure you call the parent implementation first.

public void init ( )

Source code

                    public function init()
    {
        parent::init();
        if (!isset($this->options['id'])) {
            $this->options['id'] = $this->getId();
        }
    }

registerClientEvents() protected method (available since version 2.0.2)

Registers JS event handlers that are listed in $clientEvents.

protected void registerClientEvents ( )

Source code

                    protected function registerClientEvents()
    {
        if (!empty($this->clientEvents)) {
            $id = $this->options['id'];
            $js = [];
            foreach ($this->clientEvents as $event => $handler) {
                $js[] = "jQuery('#$id').on('$event', $handler);";
            }
            $this->getView()->registerJs(implode("\n", $js));
        }
    }

registerPlugin() protected method

Registers a specific Bootstrap plugin and the related events

protected void registerPlugin ( $name )
$name | string | The name of the Bootstrap plugin

Source code

                    protected function registerPlugin($name)
    {
        $view = $this->getView();
        BootstrapPluginAsset::register($view);
        $id = $this->options['id'];
        if ($this->clientOptions !== false) {
            $options = empty($this->clientOptions) ? '' : Json::htmlEncode($this->clientOptions);
            $js = "jQuery('#$id').$name($options);";
            $view->registerJs($js);
        }
        $this->registerClientEvents();
    }