core-bundle/src/Resources/contao/forms/FormSelectMenu.php
public function generate()
	{
		$strOptions = '';
		$blnHasGroups = false;

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

		// Make sure there are no multiple options in single mode
		elseif (\is_array($this->varValue))
		{
			$this->varValue = $this->varValue[0];
		}

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

		foreach ($this->arrOptions as $arrOption)
		{
			if ($arrOption['group'])
			{
				if ($blnHasGroups)
				{
					$strOptions .= '</optgroup>';
				}

				$strOptions .= sprintf('<optgroup label="%s">',
										StringUtil::specialchars($arrOption['label']));

				$blnHasGroups = true;
				continue;
			}

			$strOptions .= sprintf('<option value="%s"%s>%s</option>',
									$arrOption['value'],
									$this->isSelected($arrOption),
									$arrOption['label']);
		}

		if ($blnHasGroups)
		{
			$strOptions .= '</optgroup>';
		}

		return sprintf('<select name="%s" id="ctrl_%s" class="%s"%s>%s</select>',
						$this->strName,
						$this->strId,
						$this->class,
						$this->getAttributes(),
						$strOptions);
	}
public function generate()
	{
		$strOptions = '';
		$blnHasGroups = false;

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

		// Make sure there are no multiple options in single mode
		elseif (\is_array($this->varValue))
		{
			$this->varValue = $this->varValue[0];
		}

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

		foreach ($this->arrOptions as $arrOption)
		{
			if ($arrOption['group'])
			{
				if ($blnHasGroups)
				{
					$strOptions .= '</optgroup>';
				}

				$strOptions .= sprintf('<optgroup label="%s">',
										StringUtil::specialchars($arrOption['label']));

				$blnHasGroups = true;
				continue;
			}

			$strOptions .= sprintf('<option value="%s"%s>%s</option>',
									$arrOption['value'],
									$this->isSelected($arrOption),
									$arrOption['label']);
		}

		if ($blnHasGroups)
		{
			$strOptions .= '</optgroup>';
		}

		return sprintf('<select name="%s" id="ctrl_%s" class="%s"%s>%s</select>',
						$this->strName,
						$this->strId,
						$this->class,
						$this->getAttributes(),
						$strOptions);
	}
public function generate ( ) { $ strOptions = '' ; $ blnHasGroups = false ; if ( $ this -> multiple ) { $ this -> strName .= '[]' ; } // Make sure there are no multiple options in single mode elseif ( \ is_array ( $ this -> varValue ) ) { $ this -> varValue = $ this -> varValue [ 0 ] ; } // Add empty option if there are none if ( empty ( $ this -> arrOptions ) || ! \ is_array ( $ this -> arrOptions ) ) { $ this -> arrOptions = array ( array ( 'value' => '' , 'label' => '-' ) ) ; } foreach ( $ this -> arrOptions as $ arrOption ) { if ( $ arrOption [ 'group' ] ) { if ( $ blnHasGroups ) { $ strOptions .= '</optgroup>' ; } $ strOptions .= sprintf ( '<optgroup label="%s">' , StringUtil :: specialchars ( $ arrOption [ 'label' ] ) ) ; $ blnHasGroups = true ; continue ; } $ strOptions .= sprintf ( '<option value="%s"%s>%s</option>' , $ arrOption [ 'value' ] , $ this -> isSelected ( $ arrOption ) , $ arrOption [ 'label' ] ) ; } if ( $ blnHasGroups ) { $ strOptions .= '</optgroup>' ; } return sprintf ( '<select name="%s" id="ctrl_%s" class="%s"%s>%s</select>' , $ this -> strName , $ this -> strId , $ this -> class , $ this -> getAttributes ( ) , $ strOptions ) ; }
Generate the widget and return it as string

@return string The widget markup
Generate the widget and return it as string