core-bundle/src/Resources/contao/widgets/SelectMenu.php
public function generate()
	{
		$arrOptions = array();
		$strClass = 'tl_select';

		if ($this->multiple)
		{
			$this->strName .= '[]';
			$strClass = 'tl_mselect';
		}

		// Add an empty option if there are none
		if (empty($this->arrOptions) || !\is_array($this->arrOptions))
		{
			$this->arrOptions = array(array('value'=>'', 'label'=>'-'));
		}

		foreach ($this->arrOptions as $strKey=>$arrOption)
		{
			if (isset($arrOption['value']))
			{
				$arrOptions[] = sprintf('<option value="%s"%s>%s</option>',
										 StringUtil::specialchars($arrOption['value']),
										 $this->isSelected($arrOption),
										 $arrOption['label']);
			}
			else
			{
				$arrOptgroups = array();

				foreach ($arrOption as $arrOptgroup)
				{
					$arrOptgroups[] = sprintf('<option value="%s"%s>%s</option>',
											   StringUtil::specialchars($arrOptgroup['value']),
											   $this->isSelected($arrOptgroup),
											   $arrOptgroup['label']);
				}

				$arrOptions[] = sprintf('<optgroup label="&nbsp;%s">%s</optgroup>', StringUtil::specialchars($strKey), implode('', $arrOptgroups));
			}
		}

		// Chosen
		if ($this->chosen)
		{
			$strClass .= ' tl_chosen';
		}

		return sprintf('%s<select name="%s" id="ctrl_%s" class="%s%s"%s onfocus="Backend.getScrollOffset()">%s</select>%s',
						($this->multiple ? '<input type="hidden" name="'. rtrim($this->strName, '[]') .'" value="">' : ''),
						$this->strName,
						$this->strId,
						$strClass,
						(($this->strClass != '') ? ' ' . $this->strClass : ''),
						$this->getAttributes(),
						implode('', $arrOptions),
						$this->wizard);
	}
public function generate()
	{
		$arrOptions = array();
		$strClass = 'tl_select';

		if ($this->multiple)
		{
			$this->strName .= '[]';
			$strClass = 'tl_mselect';
		}

		// Add an empty option if there are none
		if (empty($this->arrOptions) || !\is_array($this->arrOptions))
		{
			$this->arrOptions = array(array('value'=>'', 'label'=>'-'));
		}

		foreach ($this->arrOptions as $strKey=>$arrOption)
		{
			if (isset($arrOption['value']))
			{
				$arrOptions[] = sprintf('<option value="%s"%s>%s</option>',
										 StringUtil::specialchars($arrOption['value']),
										 $this->isSelected($arrOption),
										 $arrOption['label']);
			}
			else
			{
				$arrOptgroups = array();

				foreach ($arrOption as $arrOptgroup)
				{
					$arrOptgroups[] = sprintf('<option value="%s"%s>%s</option>',
											   StringUtil::specialchars($arrOptgroup['value']),
											   $this->isSelected($arrOptgroup),
											   $arrOptgroup['label']);
				}

				$arrOptions[] = sprintf('<optgroup label="&nbsp;%s">%s</optgroup>', StringUtil::specialchars($strKey), implode('', $arrOptgroups));
			}
		}

		// Chosen
		if ($this->chosen)
		{
			$strClass .= ' tl_chosen';
		}

		return sprintf('%s<select name="%s" id="ctrl_%s" class="%s%s"%s onfocus="Backend.getScrollOffset()">%s</select>%s',
						($this->multiple ? '<input type="hidden" name="'. rtrim($this->strName, '[]') .'" value="">' : ''),
						$this->strName,
						$this->strId,
						$strClass,
						(($this->strClass != '') ? ' ' . $this->strClass : ''),
						$this->getAttributes(),
						implode('', $arrOptions),
						$this->wizard);
	}
public function generate ( ) { $ arrOptions = array ( ) ; $ strClass = 'tl_select' ; if ( $ this -> multiple ) { $ this -> strName .= '[]' ; $ strClass = 'tl_mselect' ; } // Add an empty option if there are none if ( empty ( $ this -> arrOptions ) || ! \ is_array ( $ this -> arrOptions ) ) { $ this -> arrOptions = array ( array ( 'value' => '' , 'label' => '-' ) ) ; } foreach ( $ this -> arrOptions as $ strKey => $ arrOption ) { if ( isset ( $ arrOption [ 'value' ] ) ) { $ arrOptions [ ] = sprintf ( '<option value="%s"%s>%s</option>' , StringUtil :: specialchars ( $ arrOption [ 'value' ] ) , $ this -> isSelected ( $ arrOption ) , $ arrOption [ 'label' ] ) ; } else { $ arrOptgroups = array ( ) ; foreach ( $ arrOption as $ arrOptgroup ) { $ arrOptgroups [ ] = sprintf ( '<option value="%s"%s>%s</option>' , StringUtil :: specialchars ( $ arrOptgroup [ 'value' ] ) , $ this -> isSelected ( $ arrOptgroup ) , $ arrOptgroup [ 'label' ] ) ; } $ arrOptions [ ] = sprintf ( '<optgroup label="&nbsp;%s">%s</optgroup>' , StringUtil :: specialchars ( $ strKey ) , implode ( '' , $ arrOptgroups ) ) ; } } // Chosen if ( $ this -> chosen ) { $ strClass .= ' tl_chosen' ; } return sprintf ( '%s<select name="%s" id="ctrl_%s" class="%s%s"%s onfocus="Backend.getScrollOffset()">%s</select>%s' , ( $ this -> multiple ? '<input type="hidden" name="' . rtrim ( $ this -> strName , '[]' ) . '" value="">' : '' ) , $ this -> strName , $ this -> strId , $ strClass , ( ( $ this -> strClass != '' ) ? ' ' . $ this -> strClass : '' ) , $ this -> getAttributes ( ) , implode ( '' , $ arrOptions ) , $ this -> wizard ) ; }
Generate the widget and return it as string

@return string
Generate the widget and return it as string