Browse Source

Update Dropdown.php (#149)

Two changes:
1. Documented previously undocumented 'encode' item option.
2. Moved `is_string($item)` check to occur BEFORE `$item` is handled as array. When `$item` is a string `$item['visible']` would not be an error and will return the first character of that string. Doing `!$item['visible']` on the first character of a string does not make any sense.
tags/2.0.7
PowerGamer1 9 years ago committed by Alexander Makarov
parent
commit
f41768b3ad
  1. 9
      Dropdown.php

9
Dropdown.php

@ -38,7 +38,8 @@ class Dropdown extends Widget
* @var array list of menu items in the dropdown. Each array element can be either an HTML string, * @var array list of menu items in the dropdown. Each array element can be either an HTML string,
* or an array representing a single menu with the following structure: * or an array representing a single menu with the following structure:
* *
* - label: string, required, the label of the item link * - label: string, required, the label of the item link.
* - encode: boolean, optional, whether to HTML-ecnode item label.
* - url: string|array, optional, the url of the item link. This will be processed by [[Url::to()]]. * - url: string|array, optional, the url of the item link. This will be processed by [[Url::to()]].
* If not set, the item will be treated as a menu header when the item has no sub-menu. * If not set, the item will be treated as a menu header when the item has no sub-menu.
* - visible: boolean, optional, whether this menu item is visible. Defaults to true. * - visible: boolean, optional, whether this menu item is visible. Defaults to true.
@ -101,13 +102,13 @@ class Dropdown extends Widget
{ {
$lines = []; $lines = [];
foreach ($items as $item) { foreach ($items as $item) {
if (isset($item['visible']) && !$item['visible']) {
continue;
}
if (is_string($item)) { if (is_string($item)) {
$lines[] = $item; $lines[] = $item;
continue; continue;
} }
if (isset($item['visible']) && !$item['visible']) {
continue;
}
if (!array_key_exists('label', $item)) { if (!array_key_exists('label', $item)) {
throw new InvalidConfigException("The 'label' option is required."); throw new InvalidConfigException("The 'label' option is required.");
} }

Loading…
Cancel
Save