_options; } /** * Set options for the HTML select * * @param array $options * @return $this */ public function setOptions($options) { $this->_options = $options; return $this; } /** * Add an option to HTML select * * @param string $value HTML value * @param string $label HTML label * @param array $params HTML attributes * @return $this */ public function addOption($value, $label, $params = []) { $this->_options[] = ['value' => $value, 'label' => $label, 'params' => $params]; return $this; } /** * Set element's HTML ID * * @param string $elementId ID * @return $this */ public function setId($elementId) { $this->setData('id', $elementId); return $this; } /** * Set element's CSS class * * @param string $class Class * @return $this */ public function setClass($class) { $this->setData('class', $class); return $this; } /** * Set element's HTML title * * @param string $title Title * @return $this */ public function setTitle($title) { $this->setData('title', $title); return $this; } /** * HTML ID of the element * * @return string */ public function getId() { return $this->getData('id'); } /** * CSS class of the element * * @return string */ public function getClass() { return $this->getData('class'); } /** * Returns HTML title of the element * * @return string */ public function getTitle() { return $this->getData('title'); } /** * Render HTML * * @return string * * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function _toHtml() { if (!$this->_beforeToHtml()) { return ''; } $html = ''; return $html; } /** * Return option HTML node * * @param array $option * @param boolean $selected * @return string */ protected function _optionToHtml($option, $selected = false) { $selectedHtml = $selected ? ' selected="selected"' : ''; if ($this->getIsRenderToJsTemplate() === true) { $selectedHtml .= ' <%= option_extra_attrs.option_' . self::calcOptionHash($option['value']) . ' %>'; } $params = ''; if (!empty($option['params']) && is_array($option['params'])) { foreach ($option['params'] as $key => $value) { if (is_array($value)) { foreach ($value as $keyMulti => $valueMulti) { $params .= sprintf(' %s="%s" ', $keyMulti, $valueMulti); } } else { $params .= sprintf(' %s="%s" ', $key, $value); } } } return sprintf( '', $this->escapeHtml($option['value']), $selectedHtml, $params, $this->escapeHtml($option['label']) ); } /** * Alias for toHtml() * * @return string */ public function getHtml() { return $this->toHtml(); } /** * Calculate CRC32 hash for option value * * @param string $optionValue Value of the option * @return string */ public function calcOptionHash($optionValue) { return sprintf('%u', crc32($this->getName() . $this->getId() . $optionValue)); } }