Version: current

# Class FieldGroup

Lets you include a nested group of fields inside a template. This control gives you more flexibility over form layout.

Note: the child fields within a field group aren't rendered using FieldHolder(). Instead, SmallFieldHolder() is called, which just prefixes $Field with a <label> tag, if the Title is set.

Usage

    new FieldGroup(
            new FieldGroup(
                    new HeaderField('FieldGroup 1'),
                    new TextField('Firstname')
            ),
            new FieldGroup(
                    new HeaderField('FieldGroup 2'),
                    new TextField('Surname')
            )
    )

Adding to existing FieldGroup instances

    function getCMSFields() {
            $fields = parent::getCMSFields();

            $fields->addFieldToTab(
                    'Root.Content.Main',
                    new FieldGroup(
                            new TimeField("StartTime","What's the start time?"),
                            new TimeField("EndTime","What's the end time?")
                    ),
                    'Content'
            );

            return $fields;

    }

  Object
  ViewableData implements IteratorAggregate
  RequestHandler
  FormField
  CompositeField
  FieldGroup

Package: forms\fields-structural
Located at sapphire/forms/FieldGroup.php

## Methods summary

`public` | # `__construct( `FormField::$name` $arg1 = null, `FormField::$title` $arg2 = null )` Create a new field. Create a new field. #### Parameters $arg1 name The internal field name, passed to forms. $arg2 title The field label. #### Overrides `CompositeField::__construct`
`public string` | # `Name( )` Returns the name (ID) for the element. In some cases the FieldGroup doesn't have a title, but we still want the ID / name to be set. This code, generates the ID from the nested children Returns the name (ID) for the element. In some cases the FieldGroup doesn't have a title, but we still want the ID / name to be set. This code, generates the ID from the nested children #### Returns `string` string #### Overrides `FormField::Name`
`public` | # `Field( )` Returns a set of <span class="subfield"> tags, each containing a sub-field. You can also use <% control FieldSet %>, if you'd like more control over the generated HTML Returns a set of <span class="subfield"> tags, each containing a sub-field. You can also use <% control FieldSet %>, if you'd like more control over the generated HTML #### Overrides `CompositeField::Field`
`public` | # `setID( mixed $id )` #### Overrides `CompositeField::setID`
`public` | # `setZebra( mixed $zebra )` Set an odd/even class Set an odd/even class
`public` | # `FieldHolder( )` Returns a "Field Holder" for this field - used by templates. Forms are constructed from by concatenating a number of these field holders. The default field holder is a label and form field inside a paragraph tag. Returns a "Field Holder" for this field - used by templates. Forms are constructed from by concatenating a number of these field holders. The default field holder is a label and form field inside a paragraph tag. Composite fields can override FieldHolder to create whatever visual effects you like. It's a good idea to put the actual HTML for field holders into templates. The default field holder is the DefaultFieldHolder template. This lets you override the HTML for specific sites, if it's necessary. #### Overrides `FormField::FieldHolder`
`public string` | # `Message( )` Returns the field message, used by form validation. Use `FormField::setError()` to set this property. Returns the field message, used by form validation. Use `FormField::setError()` to set this property. #### Returns `string` string #### Overrides `FormField::Message`
`public string` | # `MessageType( )` Returns the field message type, used by form validation. Arbitrary value which is mostly used for CSS classes in the rendered HTML, e.g. "required". Use `FormField::setError()` to set this property. Returns the field message type, used by form validation. Arbitrary value which is mostly used for CSS classes in the rendered HTML, e.g. "required". Use `FormField::setError()` to set this property. #### Returns `string` string #### Overrides `FormField::MessageType`
`public` | # `jsValidation( )` This allows fields within this fieldgroup to still allow them to get valuated. This allows fields within this fieldgroup to still allow them to get valuated. #### Overrides `FormField::jsValidation`
`public` | # `php( mixed $data )`

### Methods inherited from CompositeField

`FieldSet()`, `IsReadonly()`, `collateDataFields()`, `debug()`, `fieldByName()`, `fieldPosition()`, `getChildren()`, `hasData()`, `insertAfter()`, `insertBefore()`, `isComposite()`, `makeFieldReadonly()`, `performDisabledTransformation()`, `performReadonlyTransformation()`, `push()`, `removeByName()`, `replaceField()`, `rootFieldSet()`, `setChildren()`, `setColumnCount()`, `setForm()`, `validate()`

### Methods inherited from FormField

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

### 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 mixed` | $zebra | #
`public string` | $subfieldParam | #

### Properties inherited from CompositeField

`$children`, `$columnCount`, `$readonly`

### Properties inherited from FormField

`$autocomplete`, `$containerFieldSet`, `$customValidationMessage`, `$description`, `$disabled`, `$dontEscape`, `$extraAttributes`, `$extraClass`, `$extraClasses`, `$fieldHTML5`, `$fieldHolderTemplate`, `$form`, `$html5Attributes`, `$leftTitle`, `$message`, `$messageType`, `$name`, `$possible_autocomplete_values`, `$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. -