Class DropdownField
Dropdown field, created from a <select> tag.
Setting a $has_one relation
Using here an example of an art gallery, with Exhibition pages, each of which has a Gallery they belong to. The Gallery class is also user-defined.
static $has_one = array( 'Gallery' => 'Gallery', ); public function getCMSFields() { $fields = parent::getCMSFields(); $galleries = DataObject::get('Gallery'); if ($galleries) { $galleries = $galleries->toDropdownMap('ID', 'Title', '(Select one)', true); } $fields->addFieldToTab('Root.Content.Main', new DropdownField('GalleryID', 'Gallery', $galleries), 'Content');
As you see, you need to put "GalleryID", rather than "Gallery" here.
Populate with Array
Example model defintion:
class MyObject extends DataObject { static $db = array( 'Country' => "Varchar(100)" ); }
Exampe instantiation:
new DropdownField( 'Country', 'Country', array( 'NZ' => 'New Zealand', 'US' => 'United States' 'GEM'=> 'Germany' ) );
Populate with Enum-Values
You can automatically create a map of possible values from an Enum
database column.
Example model definition:
class MyObject extends DataObject { static $db = array( 'Country' => "Enum('New Zealand,United States,Germany','New Zealand')" ); }
Field construction:
new DropdownField( 'Country', 'Country', singleton('MyObject')->dbObject('Country')->enumValues() );
- Object
-
ViewableData
implements
IteratorAggregate
-
RequestHandler
-
FormField
-
DropdownField
Direct known subclasses
CountryDropdownField,
GroupedDropdownField,
ListboxField,
LookupField,
OptionsetField
Indirect known subclasses
CheckboxSetField,
LanguageDropdownField,
Member_DatetimeOptionsetField
See: CheckboxSetField for multiple selections through checkboxes instead.
See: ListboxField for a single <select> box (with single or multiple selections).
See: TreeDropdownField for a rich and customizeable UI that can visualize a tree of selectable elements
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. |
public
string
|
|
public
boolean
|
|
public
array
|
|
public
|
|
public
|
|
public
boolean
|
|
public
|
#
setEmptyString( string $str )
Set the default selection label, e.g. "select...". Defaults to an empty
string. Automatically sets |
public
string
|
|
public
|
|
public
String
|
#
extraClass( )
Compiles all CSS-classes. Optionally includes a "nolabel"-class if no title
was set on the formfield. Uses |
public
|
Methods inherited from FormField
FieldHolder(),
LeftTitle(),
Link(),
Message(),
MessageType(),
Name(),
Required(),
RightTitle(),
SmallFieldHolder(),
Title(),
Type(),
Value(),
addExtraClass(),
attrName(),
attrTitle(),
attrValue(),
createTag(),
dataValue(),
debug(),
describe(),
forTemplate(),
getCustomValidationMessage(),
getForm(),
getTabIndex(),
getTabIndexHTML(),
hasClass(),
hasData(),
id(),
isComposite(),
isDisabled(),
isReadonly(),
jsValidation(),
name_to_label(),
performDisabledTransformation(),
removeExtraClass(),
rootFieldSet(),
saveInto(),
securityTokenEnabled(),
setContainerFieldSet(),
setCustomValidationMessage(),
setError(),
setForm(),
setLeftTitle(),
setName(),
setReadonly(),
setRightTitle(),
setTabIndex(),
setTitle(),
setValue(),
transform(),
validate()
Methods inherited from RequestHandler
allowedActions(),
checkAccessAction(),
getRequest(),
handleRequest(),
hasAction(),
httpError()
Methods inherited from ViewableData
ATT_val(),
BaseHref(),
CSSClasses(),
CurrentMember(),
CurrentPage(),
Debug(),
Even(),
EvenOdd(),
First(),
FirstLast(),
HasPerm(),
IsAjax(),
JS_val(),
Last(),
Me(),
Middle(),
MiddleString(),
Modulus(),
MultipleOf(),
Odd(),
Pos(),
RAW_val(),
SQL_val(),
ThemeDir(),
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(),
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. |
protected
boolean
|
$isSelected |
#
$isSelected Determines if the field was selected at the time it was rendered,
so if |
protected
boolean
|
$disabled |
#
$disabled |
protected
boolean
|
$hasEmptyDefault |
#
$hasEmptyDefault Show the first <option> element as empty (not having a
value), with an optional label defined through |
protected
string
|
$emptyString |
#
$emptyString The title shown for an empty default selection, e.g. "Select...". |
Properties inherited from FormField
$containerFieldSet,
$customValidationMessage,
$description,
$dontEscape,
$extraClass,
$extraClasses,
$form,
$leftTitle,
$message,
$messageType,
$name,
$readonly,
$rightTitle,
$tabIndex,
$title,
$value
Properties inherited from RequestHandler
$allowed_actions,
$brokenOnConstruct,
$request,
$url_handlers
Properties inherited from ViewableData
$casting,
$customisedObject,
$default_cast,
$failover,
$iteratorPos,
$iteratorTotalItems
Comments
Use the Silverstripe Forum to ask questions.