/** * * @return type */ public function renderItems() { $out = []; foreach ($this->items as $i => $item) { if (!empty($item['label'])) { $encodeLabel = isset($item['encode']) ? $item['encode'] : $this->encodeLabels; $label = $encodeLabel ? Html::encode($item['label']) : $item['label']; $label = Html::tag('label', $label); } else { $label = ''; } $options = ArrayHelper::getValue($item, 'options', []); $url = ArrayHelper::getValue($item, 'url', '#'); if (isset($item['icon'])) { if (is_array($item['icon'])) { $iconOptions = ArrayHelper::getValue($item['icon'], 'options', []); $iconPrefix = ArrayHelper::getValue($item['icon'], 'prefix', 'fi-'); $iconTag = ArrayHelper::getValue($item['icon'], 'tag', 'i'); $icon = Html::icon($item['icon']['name'], $iconOptions, $iconPrefix, $iconTag); } else { $icon = Html::icon($item['icon']); } } elseif (isset($item['img'])) { $icon = Html::img($item['img']); } else { throw new InvalidConfigException("'icon' or 'img' must be set"); } Html::addCssClass($options, 'item'); $options['role'] = 'button'; $options['tabindex'] = 0; $out[] = Html::a($icon . $label, $url, $options); } return $out; }