Version: current

# Class NullableField

NullableField is a field that wraps other fields when you want to allow the user to specify whether the value of the field is null or not.

The classic case is to wrap a TextField so that the user can distinguish between an empty string and a null string. $a = new NullableField(new TextField("Field1", "Field 1", "abc"));

It displays the field that is wrapped followed by a checkbox that is used to specify if the value is null or not. It uses the Title of the wrapped field for its title. When a form is submitted the field tests the value of the "is null" checkbox and sets its value accordingly. You can retrieve the value of the wrapped field from the NullableField as follows: $field->Value() or $field->dataValue()

You can specify the label to use for the "is null" checkbox. If you want to use I8N for this label then specify it like this: $field->setIsNullLabel(_T(SOME_MODULE_ISNULL_LABEL, "Is Null");

  Object
  ViewableData implements IteratorAggregate
  RequestHandler
  FormField
  NullableField

Package: forms\fields-basic
Author: Pete Bacon Darwin
Located at sapphire/forms/NullableField.php

## Methods summary

`public `NullableField`` | # `__construct( `FormField` $valueField, `FormField::$title` $isNullLabel = null )` Create a new nullable field Create a new nullable field #### Parameters $valueField $valueField $isNullLabel title The field label. #### Returns ``NullableField`` NullableField #### Overrides `FormField::__construct`
`public string` | # `getIsNullLabel( )` Get the label used for the Is Null checkbox. Get the label used for the Is Null checkbox. #### Returns `string` string
`public` | # `setIsNullLabel( string $isNulLabel )` Set the label used for the Is Null checkbox. Set the label used for the Is Null checkbox. #### Parameters $isNulLabel $isNulLabel string
`public string` | # `getIsNullId( )` Get the id used for the Is Null check box. Get the id used for the Is Null check box. #### Returns `string` string
`public` | # `Field( )` (non-PHPdoc) (non-PHPdoc) #### See sapphire/forms/FormField#Field() #### Overrides `FormField::Field`
`public` | # `setValue( mixed $value, mixed $data = null )` Value is sometimes an array, and sometimes a single value, so we need to handle both cases Value is sometimes an array, and sometimes a single value, so we need to handle both cases #### Overrides `FormField::setValue`
`public` | # `setName( mixed $name )` (non-PHPdoc) (non-PHPdoc) #### See forms/FormField#setName($name) #### Overrides `FormField::setName`
`public` | # `debug( )` (non-PHPdoc) (non-PHPdoc) #### See sapphire/forms/FormField#debug() #### Overrides `FormField::debug`

### 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()`, `describe()`, `extraClass()`, `fieldHolderTemplates()`, `fieldTemplates()`, `forTemplate()`, `getCustomValidationMessage()`, `getExtraClasses()`, `getForm()`, `getHTML5Attribute()`, `getTabIndex()`, `getTabIndexHTML()`, `hasClass()`, `hasData()`, `id()`, `isComposite()`, `isDisabled()`, `isReadonly()`, `jsValidation()`, `name_to_label()`, `performDisabledTransformation()`, `performReadonlyTransformation()`, `removeExtraAttribute()`, `removeExtraClass()`, `rootFieldSet()`, `saveInto()`, `securityTokenEnabled()`, `setAutocomplete()`, `setContainerFieldSet()`, `setCustomValidationMessage()`, `setDisabled()`, `setError()`, `setFieldHolderTemplate()`, `setForm()`, `setHTML5Attribute()`, `setLeftTitle()`, `setReadonly()`, `setRightTitle()`, `setSmallFieldHolderTemplate()`, `setTabIndex()`, `setTemplate()`, `setTitle()`, `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 `FormField`` | $valueField | # The field that holds the value of this field The field that holds the value of this field
`protected string` | $isNullLabel | # The label to show next to the is null check box. The label to show next to the is null check box.

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