Version: current

# Class EditableMultipleOptionField

Base class for multiple option fields such as EditableDropdownField and radio sets.

Implemented as a class but should be viewed as abstract, you should instantiate a subclass such as EditableDropdownField

  Object
  ViewableData implements IteratorAggregate
  DataObject implements DataObjectInterface, i18nEntityProvider
  EditableFormField
  EditableMultipleOptionField

### Direct known subclasses

`EditableCheckboxGroupField`, `EditableDropdown`, `EditableRadioField`

Package: userforms
See: ``EditableCheckboxGroupField``
See: EditableDropdownField
Located at userforms/code/model/formfields/EditableMultipleOptionField.php

## Methods summary

`public` | # `doPublish( mixed $fromStage, mixed $toStage, mixed $createNewVersion = false )` Publishing Versioning support. Publishing Versioning support. When publishing it needs to handle copying across / publishing each of the individual field options #### Overrides `EditableFormField::doPublish`
`public` | # `doDeleteFromStage( mixed $stage )` Unpublishing Versioning support Unpublishing Versioning support When unpublishing the field it has to remove all options attached #### Overrides `EditableFormField::doDeleteFromStage`
`public` | # `delete( )` Deletes all the options attached to this field before deleting the field. Keeps stray options from floating around Deletes all the options attached to this field before deleting the field. Keeps stray options from floating around #### Overrides `DataObject::delete`
`public `DataObject`` | # `duplicate( mixed $doWrite = true )` Duplicate a pages content. We need to make sure all the fields attached to that page go with it Duplicate a pages content. We need to make sure all the fields attached to that page go with it #### Parameters $doWrite $doWrite Perform a write() operation before returning the object. If this is true, it will create the duplicate in the database. #### Returns ``DataObject`` DataObject #### Overrides `DataObject::duplicate`
`public` | # `populateFromPostData( `ArrayData` $data )` On before saving this object we need to go through and keep an eye on all our option fields that are related to this field in the form On before saving this object we need to go through and keep an eye on all our option fields that are related to this field in the form #### Parameters $data ArrayData #### Overrides `EditableFormField::populateFromPostData`
`public boolean` | # `getHasAddableOptions( )` Return whether or not this field has addable options such as a EditableDropdownField or `EditableRadioField` Return whether or not this field has addable options such as a EditableDropdownField or `EditableRadioField` #### Returns `boolean` bool #### Overrides `EditableFormField::getHasAddableOptions`
`public `FormField`` | # `getFormField( )` Return the form field for this object in the front end form view Return the form field for this object in the front end form view #### Returns ``FormField`` FormField #### Overrides `EditableFormField::getFormField`

### Methods inherited from EditableFormField

`CustomRules()`, `Dependencies()`, `EditSegment()`, `TitleField()`, `canCreate()`, `canDelete()`, `canEdit()`, `getErrorMessage()`, `getFieldConfiguration()`, `getFieldName()`, `getFieldValidationOptions()`, `getIcon()`, `getSetting()`, `getSettingName()`, `getSettings()`, `getShowOnLoad()`, `getSubmittedFormField()`, `getTitle()`, `getValidation()`, `get_possible_autocompletes()`, `isReadonly()`, `setAllowedCss()`, `setReadonly()`, `setSetting()`, `setSettings()`, `showExtraOptions()`, `showInReports()`

### Methods inherited from DataObject

`Aggregate()`, `RelationshipAggregate()`, `__construct()`, `baseTable()`, `belongs_to()`, `buildDataObjectSet()`, `buildSQL()`, `can()`, `canView()`, `castedUpdate()`, `composite_fields()`, `context_obj()`, `customDatabaseFields()`, `custom_database_fields()`, `data()`, `databaseFields()`, `databaseIndexes()`, `database_extensions()`, `database_fields()`, `db()`, `dbObject()`, `debug()`, `defaultSearchFilters()`, `defineMethods()`, `delete_by_id()`, `destroy()`, `disableCMSFieldsExtensions()`, `disable_subclass_access()`, `enableCMSFieldsExtensions()`, `enable_subclass_access()`, `exists()`, `extendedSQL()`, `fieldLabel()`, `fieldLabels()`, `flushCache()`, `flush_and_destroy_cache()`, `forceChange()`, `get()`, `getAllFields()`, `getCMSActions()`, `getCMSFields()`, `getChangedFields()`, `getClassAncestry()`, `getComponent()`, `getComponents()`, `getComponentsQuery()`, `getDefaultSearchContext()`, `getField()`, `getFrontEndFields()`, `getManyManyComponents()`, `getManyManyComponentsQuery()`, `getManyManyFilter()`, `getManyManyJoin()`, `getRemoteJoinField()`, `getReverseAssociation()`, `get_by_id()`, `get_one()`, `get_validation_enabled()`, `hasDatabaseField()`, `hasField()`, `hasOwnTableDatabaseField()`, `hasValue()`, `has_many()`, `has_one()`, `has_own_table()`, `i18n_plural_name()`, `i18n_singular_name()`, `inheritedDatabaseFields()`, `instance_get()`, `instance_get_one()`, `isChanged()`, `isEmpty()`, `isInDB()`, `is_composite_field()`, `many_many()`, `many_many_extraFields()`, `merge()`, `newClassInstance()`, `onAfterDelete()`, `onAfterWrite()`, `onBeforeDelete()`, `onBeforeWrite()`, `plural_name()`, `populateDefaults()`, `provideI18nEntities()`, `relObject()`, `requireDefaultRecords()`, `requireTable()`, `reset()`, `scaffoldFormFields()`, `scaffoldSearchFields()`, `searchableFields()`, `setCastedField()`, `setClassName()`, `setComponent()`, `setField()`, `set_context_obj()`, `set_validation_enabled()`, `singular_name()`, `summaryFields()`, `toMap()`, `update()`, `validate()`, `write()`, `writeComponents()`, `writeWithoutVersion()`

### 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()`, `escapeTypeForField()`, `getIterator()`, `getSecurityID()`, `getXMLValues()`, `i18nLocale()`, `iteratorProperties()`, `obj()`, `renderWith()`, `setCustomisedObj()`

### 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()`, `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

`public static array` | $has_many | # This defines a one-to-many relationship. It is a map of component name to the remote data class. This defines a one-to-many relationship. It is a map of component name to the remote data class. This relationship type does not actually create a data structure itself - you need to define a matching $has_one relationship on the child class. Also, if the $has_one relationship on the child class has multiple links to this class you can use the syntax "ClassName.HasOneRelationshipName" in the remote data class definition to show which foreign key to use.

### Properties inherited from EditableFormField

`$allowed_css`, `$db`, `$default_sort`, `$extensions`, `$has_one`, `$readonly`

### Properties inherited from DataObject

`$allowed_actions`, `$ancestry`, `$api_access`, `$belongs_many_many`, `$belongs_to`, `$brokenOnDelete`, `$brokenOnWrite`, `$cache_get_one`, `$cache_has_own_table`, `$cache_has_own_table_field`, `$casting`, `$componentCache`, `$components`, `$create_table_options`, `$default_records`, `$defaults`, `$destroyed`, `$field_labels`, `$indexes`, `$many_many`, `$many_many_extraFields`, `$original`, `$plural_name`, `$record`, `$searchable_fields`, `$singular_name`, `$summary_fields`

### Properties inherited from ViewableData

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

### Properties inherited from Object

`$class`, `$extension_instances`

[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. -