Version: current

# Class DropdownField

Dropdown field, created from a <select> tag.

  Object
  ViewableData implements IteratorAggregate
  RequestHandler
  FormField
  DropdownField

### Direct known subclasses

`CountryDropdownField`, `GroupedDropdownField`, `StateDropdownField`, `StateProvinceDropdownField`, `SubsiteDropdownField`, `HTMLDropdownField`, `ListboxField`, `LookupField`, `OptionsetField`, `ProductParamValue_BoolValueField`, `ProductParamValue_MultiValueField`, `RestrictionRegionCountryDropdownField`, `RoomServiceDropdownField`

### Indirect known subclasses

`CheckboxSetField`, `LanguageDropdownField`, `ProductParamValue_MultiValueSetField`, `SimpleTreeDropdownField`

Package: forms\fields-basic
Used by: ``ForeignKey``
Located at sapphire/forms/DropdownField.php

## Methods summary

`public` | # `__construct( mixed $name, mixed $title = null, mixed $source = array(), mixed $value = "", mixed $form = null, mixed $emptyString = null )` Creates a new dropdown field. Creates a new dropdown field. #### Parameters $name $name The field name $title $title The field title $source $source An map of the dropdown items $value $value The current value $form $form The parent form $emptyString $emptyString mixed Add an empty selection on to of the `DropdownField::$source`-Array (can also be boolean, which results in an empty string) Argument is deprecated in 2.3, please use `DropdownField::setHasEmptyDefault()` and `DropdownField::setEmptyString()` instead. #### Overrides `FormField::__construct`
`public string` | # `Field( )` Returns a <select> tag containing all the appropriate <option> tags. Makes use of FormField->createTag() to generate the <select> tag and option elements inside is as the content of the <select>. Returns a <select> tag containing all the appropriate <option> tags. Makes use of FormField->createTag() to generate the <select> tag and option elements inside is as the content of the <select>. #### Returns `string` HTML tag for this dropdown field #### Overrides `FormField::Field`
`public boolean` | # `isSelected( )` #### Returns `boolean` boolean
`public array` | # `getSource( )` Gets the source array including any empty default values. Gets the source array including any empty default values. #### Returns `array` array
`public` | # `setSource( array $source )` #### Parameters $source array $source
`public` | # `setHasEmptyDefault( boolean $bool )` #### Parameters $bool boolean $bool
`public boolean` | # `getHasEmptyDefault( )` #### Returns `boolean` boolean
`public` | # `setEmptyString( string $str )` Set the default selection label, e.g. "select...". Defaults to an empty string. Automatically sets `DropdownField::$hasEmptyDefault` to true. Set the default selection label, e.g. "select...". Defaults to an empty string. Automatically sets `DropdownField::$hasEmptyDefault` to true. #### Parameters $str string $str
`public string` | # `getEmptyString( )` #### Returns `string` string
`public` | # `performReadonlyTransformation( )` Returns a readonly version of this field Returns a readonly version of this field #### Overrides `FormField::performReadonlyTransformation`
`public String` | # `extraClass( )` Compiles all CSS-classes. Optionally includes a "nolabel"-class if no title was set on the formfield. Uses `FormField::Message()` and `FormField::MessageType()` to add validatoin error classes which can be used to style the contained tags. Compiles all CSS-classes. Optionally includes a "nolabel"-class if no title was set on the formfield. Uses `FormField::Message()` and `FormField::MessageType()` to add validatoin error classes which can be used to style the contained tags. #### Returns `String` CSS-classnames #### Overrides `FormField::extraClass`

### Methods inherited from FormField

`FieldHolder()`, `LeftTitle()`, `Link()`, `Message()`, `MessageType()`, `Name()`, `Required()`, `RightTitle()`, `SmallFieldHolder()`, `Title()`, `Type()`, `Value()`, `addExtraAttribute()`, `addExtraClass()`, `allowHTML5()`, `allow_html5()`, `attrName()`, `attrTitle()`, `attrValue()`, `createTag()`, `dataValue()`, `debug()`, `describe()`, `fieldHolderTemplates()`, `fieldTemplates()`, `forTemplate()`, `getCustomValidationMessage()`, `getExtraClasses()`, `getForm()`, `getHTML5Attribute()`, `getTabIndex()`, `getTabIndexHTML()`, `hasClass()`, `hasData()`, `id()`, `isComposite()`, `isDisabled()`, `isReadonly()`, `jsValidation()`, `name_to_label()`, `performDisabledTransformation()`, `removeExtraAttribute()`, `removeExtraClass()`, `rootFieldSet()`, `saveInto()`, `securityTokenEnabled()`, `setAutocomplete()`, `setContainerFieldSet()`, `setCustomValidationMessage()`, `setDisabled()`, `setError()`, `setFieldHolderTemplate()`, `setForm()`, `setHTML5Attribute()`, `setLeftTitle()`, `setName()`, `setReadonly()`, `setRightTitle()`, `setSmallFieldHolderTemplate()`, `setTabIndex()`, `setTemplate()`, `setTitle()`, `setValue()`, `smallFieldHolderTemplates()`, `transform()`, `useHTML5()`, `use_html5()`, `validate()`

### Methods inherited from RequestHandler

`allowedActions()`, `checkAccessAction()`, `getRequest()`, `handleRequest()`, `hasAction()`, `httpError()`

### Methods inherited from ViewableData

`ATT_val()`, `BaseHref()`, `CSSClasses()`, `ColumnBreak()`, `ColumnCalc()`, `ColumnNumber()`, `ColumnPad()`, `ColumnPos()`, `CurrentMember()`, `CurrentPage()`, `Debug()`, `Even()`, `EvenOdd()`, `First()`, `FirstLast()`, `HasPerm()`, `IsAjax()`, `JS_val()`, `Last()`, `Me()`, `Middle()`, `MiddleString()`, `Modulus()`, `MultipleOf()`, `Odd()`, `Pos()`, `RAW_val()`, `SQL_val()`, `ThemeDir()`, `ThemeName()`, `Top()`, `TotalItems()`, `XML_val()`, `__get()`, `__isset()`, `__set()`, `buildCastingCache()`, `cachedCall()`, `castingClass()`, `castingHelper()`, `castingHelperPair()`, `castingObjectCreator()`, `castingObjectCreatorPair()`, `customise()`, `defineMethods()`, `escapeTypeForField()`, `getField()`, `getIterator()`, `getSecurityID()`, `getXMLValues()`, `hasField()`, `hasValue()`, `i18nLocale()`, `iteratorProperties()`, `obj()`, `renderWith()`, `setCustomisedObj()`, `setField()`

### Methods inherited from Object

`__call()`, `__toString()`, `__wakeup()`, `addMethodsFrom()`, `addStaticVars()`, `addWrapperMethod()`, `add_extension()`, `add_static_var()`, `allMethodNames()`, `cacheToFile()`, `cacheToFileWithArgs()`, `clearCache()`, `combined_static()`, `create()`, `createMethod()`, `create_from_string()`, `exists()`, `extInstance()`, `extend()`, `getCustomClass()`, `getExtensionInstance()`, `getExtensionInstances()`, `get_extensions()`, `get_static()`, `hasExtension()`, `hasMethod()`, `has_extension()`, `invokeWithExtensions()`, `is_a()`, `loadCache()`, `parentClass()`, `parse_class_spec()`, `remove_extension()`, `sanitiseCachename()`, `saveCache()`, `set_stat()`, `set_static()`, `set_uninherited()`, `stat()`, `strong_create()`, `uninherited()`, `uninherited_static()`, `useCustomClass()`

### Magic methods summary

## Properties summary

`protected boolean` | $source | # $source Associative or numeric array of all dropdown items, with array key as the submitted field value, and the array value as a natural language description shown in the interface element. $source Associative or numeric array of all dropdown items, with array key as the submitted field value, and the array value as a natural language description shown in the interface element.
`protected boolean` | $isSelected | # $isSelected Determines if the field was selected at the time it was rendered, so if `FormField::$value` matches on of the array values specified in `DropdownField::$source` $isSelected Determines if the field was selected at the time it was rendered, so if `FormField::$value` matches on of the array values specified in `DropdownField::$source`
`protected boolean` | $hasEmptyDefault | # $hasEmptyDefault Show the first <option> element as empty (not having a value), with an optional label defined through `DropdownField::$emptyString`. By default, the <select> element will be rendered with the first option from `DropdownField::$source` selected. $hasEmptyDefault Show the first <option> element as empty (not having a value), with an optional label defined through `DropdownField::$emptyString`. By default, the <select> element will be rendered with the first option from `DropdownField::$source` selected.
`protected string` | $emptyString | # $emptyString The title shown for an empty default selection, e.g. "Select...". $emptyString The title shown for an empty default selection, e.g. "Select...".

### Properties inherited from FormField

`$autocomplete`, `$containerFieldSet`, `$customValidationMessage`, `$description`, `$disabled`, `$dontEscape`, `$extraAttributes`, `$extraClass`, `$extraClasses`, `$fieldHTML5`, `$fieldHolderTemplate`, `$form`, `$html5Attributes`, `$leftTitle`, `$message`, `$messageType`, `$name`, `$possible_autocomplete_values`, `$readonly`, `$rightTitle`, `$smallFieldHolderTemplate`, `$tabIndex`, `$template`, `$title`, `$use_html5`, `$value`

### Properties inherited from RequestHandler

`$allowed_actions`, `$brokenOnConstruct`, `$request`, `$url_handlers`

### Properties inherited from ViewableData

`$casting`, `$customisedObject`, `$default_cast`, `$failover`, `$iteratorPos`, `$iteratorTotalItems`

### Properties inherited from Object

`$class`, `$extension_instances`, `$extensions`

[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -