Nette\Forms\Helpers::createSelectBox PHP Метод

createSelectBox() публичный статический Метод

public static createSelectBox ( array $items, array $optionAttrs = NULL, $selected = NULL ) : Nette\Utils\Html
$items array
$optionAttrs array
Результат Nette\Utils\Html
    public static function createSelectBox(array $items, array $optionAttrs = NULL, $selected = NULL)
    {
        if ($selected !== NULL) {
            $optionAttrs['selected?'] = $selected;
        }
        list($optionAttrs, $optionTag) = self::prepareAttrs($optionAttrs, 'option');
        $option = Html::el();
        $res = $tmp = '';
        foreach ($items as $group => $subitems) {
            if (is_array($subitems)) {
                $res .= Html::el('optgroup')->label($group)->startTag();
                $tmp = '</optgroup>';
            } else {
                $subitems = [$group => $subitems];
            }
            foreach ($subitems as $value => $caption) {
                $option->value = $value;
                foreach ($optionAttrs as $k => $v) {
                    $option->attrs[$k] = isset($v[$value]) ? $v[$value] : NULL;
                }
                if ($caption instanceof Html) {
                    $caption = clone $caption;
                    $res .= $caption->setName('option')->addAttributes($option->attrs);
                } else {
                    $res .= $optionTag . $option->attributes() . '>' . htmlspecialchars($caption, ENT_NOQUOTES, 'UTF-8') . '</option>';
                }
            }
            $res .= $tmp;
            $tmp = '';
        }
        return Html::el('select')->setHtml($res);
    }

Usage Example

Пример #1
0
 /**
  * Generates control's HTML element.
  * @return Nette\Utils\Html
  */
 public function getControl()
 {
     $items = array();
     foreach ($this->options as $key => $value) {
         $items[is_array($value) ? $this->translate($key) : $key] = $this->translate($value);
     }
     return Nette\Forms\Helpers::createSelectBox($items, array('selected?' => $this->value, 'disabled:' => is_array($this->disabled) ? $this->disabled : NULL))->addAttributes(parent::getControl()->attrs)->multiple(TRUE);
 }
All Usage Examples Of Nette\Forms\Helpers::createSelectBox