diff --git a/Dropdown.php b/Dropdown.php index 21681d7..fab353b 100644 --- a/Dropdown.php +++ b/Dropdown.php @@ -40,7 +40,12 @@ class Dropdown extends Widget */ public $encodeLabels = true; - + /** + * @var array the HTML attributes for the widget container tag. + * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered. + */ + protected $_containerOptions = []; + /** * Initializes the widget. * If you override this method, make sure you call the parent implementation first. @@ -49,6 +54,7 @@ class Dropdown extends Widget { parent::init(); Html::addCssClass($this->options, 'dropdown-menu'); + $this->_containerOptions = $this->options; } /** @@ -56,17 +62,16 @@ class Dropdown extends Widget */ public function run() { - echo $this->renderItems($this->items, $this->options); + echo $this->renderItems($this->items); } /** * Renders menu items. * @param array $items the menu items to be rendered - * @param array $containerOptions the HTML attributes for the widget container tag * @return string the rendering result. * @throws InvalidConfigException if the label option is not specified in one of the items. */ - protected function renderItems($items, $containerOptions) + protected function renderItems($items) { $lines = []; foreach ($items as $i => $item) { @@ -88,13 +93,13 @@ class Dropdown extends Widget $linkOptions['tabindex'] = '-1'; $content = Html::a($label, ArrayHelper::getValue($item, 'url', '#'), $linkOptions); if (!empty($item['items'])) { - unset($containerOptions['id']); - $this->renderItems($item['items'], $containerOptions); + unset($this->_containerOptions['id']); + $this->renderItems($item['items']); Html::addCssClass($options, 'dropdown-submenu'); } $lines[] = Html::tag('li', $content, $options); } - return Html::tag('ul', implode("\n", $lines), $this->options); + return Html::tag('ul', implode("\n", $lines), $this->_containerOptions); } }