Skip to content

Fields ​

Type
Class
Namespace
craft\services
Inherits
craft\services\Fields » yii\base\Component » yii\base\BaseObject
Implements
yii\base\Configurable
Since
3.0.0

Fields service.

An instance of the service is available via Craft::$app->fields.

View source

Public Properties ​

PropertyDescription
allFieldTypesstring[] – The available field type classes
allFieldscraft\base\FieldInterface[] – The fields
allGroupscraft\models\FieldGroup[] – The field groups
behaviorsyii\base\Behavior – List of behaviors attached to this component.
fieldTypesWithContentstring[] – The field type classes
fieldVersionstring, null
fieldsWithContentcraft\base\FieldInterface[] – The fields
fieldsWithoutContentcraft\base\FieldInterface[] – The fields
ignoreProjectConfigChangesboolean – Whether to ignore changes to the project config.
oldFieldColumnPrefixstring, null

allFieldTypes ​

Type
string[]
Default value
null
Access
Read-only

The available field type classes

View source

allFields ​

Type
craft\base\FieldInterface[]
Default value
null
Access
Read-only

The fields

View source

allGroups ​

Type
craft\models\FieldGroup[]
Default value
null
Access
Read-only

The field groups

View source

fieldTypesWithContent ​

Type
string[]
Default value
null
Access
Read-only

The field type classes

View source

fieldVersion ​

Type
string, null
Default value
null
Access
Read-only
Since
3.7.21

View source

fieldsWithContent ​

Type
craft\base\FieldInterface[]
Default value
null
Access
Read-only

The fields

View source

fieldsWithoutContent ​

Type
craft\base\FieldInterface[]
Default value
null
Access
Read-only
Since
3.7.60

The fields

View source

ignoreProjectConfigChanges ​

DEPRECATED

Deprecated in 3.1.2. Use craft\services\ProjectConfig::$muteEvents instead.

Type
boolean
Default value
false

Whether to ignore changes to the project config.

View source

oldFieldColumnPrefix ​

Type
string, null
Default value
null

View source

Public Methods ​

MethodDescription
__call()Calls the named method which is not a class method.
__clone()This method is called after the object is created by cloning an existing one.
__construct()Constructor.
__get()Returns the value of a component property.
__isset()Checks if a property is set, i.e. defined and not null.
__serialize()Serializer
__set()Sets the value of a component property.
__unset()Sets a component property to be null.
applyFieldDelete()Applies a field delete to the database.
applyFieldSave()Applies a field save to the database.
assembleLayout()Assembles a field layout.
assembleLayoutFromPost()Assembles a field layout from post data.
attachBehavior()Attaches a behavior to this component.
attachBehaviors()Attaches a list of behaviors to the component.
behaviors()Returns a list of behaviors that this component should behave as.
canGetProperty()Returns a value indicating whether a property can be read.
canSetProperty()Returns a value indicating whether a property can be set.
className()Returns the fully qualified name of this class.
createField()Creates a field with a given config.
createFieldConfig()Returns the config for the given field.
createLayoutElement()Creates a field layout element instance from its config.
deleteField()Deletes a field.
deleteFieldById()Deletes a field by its ID.
deleteGroup()Deletes a field group.
deleteGroupById()Deletes a field group by its ID.
deleteLayout()Deletes a field layout.
deleteLayoutById()Deletes a field layout(s) by its ID.
deleteLayoutsByType()Deletes field layouts associated with a given element type.
detachBehavior()Detaches a behavior from the component.
detachBehaviors()Detaches all behaviors from the component.
doesFieldWithHandleExist()Returns whether a field exists with a given handle and context.
ensureBehaviors()Makes sure that the behaviors declared in behaviors() are attached to this component.
getAllFieldTypes()Returns all available field type classes.
getAllFields()Returns all fields within a field context(s).
getAllGroups()Returns all field groups.
getBehavior()Returns the named behavior object.
getBehaviors()Returns all behaviors attached to this component.
getCompatibleFieldTypes()Returns all field types whose column types are considered compatible with a given field.
getFieldByHandle()Returns a field by its handle and optional context.
getFieldById()Returns a field by its ID.
getFieldByUid()Returns a field by its UID.
getFieldIdsByLayoutId()Returns the field IDs for a given layout ID.
getFieldIdsByLayoutIds()Returns the field IDs grouped by layout IDs, for a given set of layout IDs.
getFieldTypesWithContent()Returns all field types that have a column in the content table.
getFieldVersion()Returns the current field version.
getFieldsByElementType()Returns all of the fields used by a given element type.
getFieldsByGroupId()Returns all the fields in a given group.
getFieldsByLayoutId()Returns the fields in a field layout, identified by its ID.
getFieldsWithContent()Returns all fields that have a column in the content table.
getFieldsWithoutContent()Returns all fields that don’t have a column in the content table.
getGroupById()Returns a field group by its ID.
getGroupByUid()Returns a field group by its UID.
getLayoutById()Returns a field layout by its ID.
getLayoutByType()Returns a field layout by its associated element type.
getLayoutTabsById()Returns a layout's tabs by its ID.
getLayoutsByIds()Returns field layouts by their IDs.
getLayoutsByType()Returns all of the field layouts associated with a given element type.
handleChangedField()Handle field changes.
handleChangedGroup()Handle field group change
handleDeletedField()Handle a field getting deleted.
handleDeletedGroup()Handle field group getting deleted.
hasEventHandlers()Returns a value indicating whether there is any handler attached to the named event.
hasMethod()Returns a value indicating whether a method is defined.
hasProperty()Returns a value indicating whether a property is defined for this component.
init()Initializes the object.
off()Detaches an existing event handler from this component.
on()Attaches an event handler to an event.
prepFieldForSave()Preps a field to be saved.
refreshFields()Refreshes the internal field cache.
restoreLayoutById()Restores a field layout by its ID.
saveField()Saves a field.
saveGroup()Saves a field group.
saveLayout()Saves a field layout.
trigger()Triggers an event.
updateFieldVersion()Sets a new field version, so the CustomFieldBehavior class will get regenerated on the next request.

__serialize() ​

Since
3.5.14

Serializer

View source

applyFieldDelete() ​

Since
3.1.0

Applies a field delete to the database.

View source

Arguments ​

  • $fieldUid (mixed)

Throws ​

applyFieldSave() ​

Since
3.1.0

Applies a field save to the database.

View source

Arguments ​

assembleLayout() ​

DEPRECATED

Deprecated in 3.5.0.

Assembles a field layout.

View source

Arguments ​

  • $postedFieldLayout (array) – The post data for the field layout
  • $requiredFields (array) – The field IDs that should be marked as required in the field layout

Returns ​

craft\models\FieldLayout – The field layout

assembleLayoutFromPost() ​

Assembles a field layout from post data.

View source

Arguments ​

  • $namespace (string, null) – The namespace that the form data was posted in, if any

Returns ​

craft\models\FieldLayout – The field layout

Throws ​

createField() ​

Creates a field with a given config.

View source

Arguments ​

  • $config (mixed) – The field’s class name, or its config, with a type value and optionally a settings value

Returns ​

craft\base\FieldInterface – The field

createFieldConfig() ​

Since
3.1.0

Returns the config for the given field.

View source

Arguments ​

Returns ​

array

createLayoutElement() ​

Since
3.5.0

Creates a field layout element instance from its config.

View source

Arguments ​

Returns ​

craft\base\FieldLayoutElementInterface

Throws ​

deleteField() ​

Deletes a field.

View source

Arguments ​

Returns ​

boolean – Whether the field was deleted successfully

Throws ​

deleteFieldById() ​

Deletes a field by its ID.

View source

Arguments ​

  • $fieldId (integer) – The field’s ID

Returns ​

boolean – Whether the field was deleted successfully

deleteGroup() ​

Deletes a field group.

View source

Arguments ​

Returns ​

boolean – Whether the field group was deleted successfully

deleteGroupById() ​

Deletes a field group by its ID.

View source

Arguments ​

  • $groupId (integer) – The field group’s ID

Returns ​

boolean – Whether the field group was deleted successfully

deleteLayout() ​

Deletes a field layout.

View source

Arguments ​

Returns ​

boolean – Whether the field layout was deleted successfully

deleteLayoutById() ​

Deletes a field layout(s) by its ID.

View source

Arguments ​

Returns ​

boolean – Whether the field layout was deleted successfully

deleteLayoutsByType() ​

Deletes field layouts associated with a given element type.

View source

Arguments ​

  • $type (string) – The element type

Returns ​

boolean – Whether the field layouts were deleted successfully

doesFieldWithHandleExist() ​

Returns whether a field exists with a given handle and context.

View source

Arguments ​

Returns ​

boolean – Whether a field with that handle exists

getAllFieldTypes() ​

Returns all available field type classes.

View source

Returns ​

string[] – The available field type classes

getAllFields() ​

Returns all fields within a field context(s).

View source

Arguments ​

Returns ​

craft\base\FieldInterface[] – The fields

getAllGroups() ​

Returns all field groups.

View source

Returns ​

craft\models\FieldGroup[] – The field groups

getCompatibleFieldTypes() ​

Returns all field types whose column types are considered compatible with a given field.

View source

Arguments ​

  • $field (craft\base\FieldInterface) – The current field to base compatible fields on
  • $includeCurrent (boolean) – Whether $field's class should be included

Returns ​

string[] – The compatible field type classes

getFieldByHandle() ​

Returns a field by its handle and optional context.

View source

Arguments ​

Returns ​

craft\base\FieldInterface, null – The field, or null if it doesn’t exist


Example ​

php
$body = Craft::$app->fields->getFieldByHandle('body');
twig
{% set body = craft.app.fields.getFieldByHandle('body') %}
{{ body.instructions }}

getFieldById() ​

Returns a field by its ID.

View source

Arguments ​

  • $fieldId (integer) – The field’s ID

Returns ​

craft\base\FieldInterface, null – The field, or null if it doesn’t exist

getFieldByUid() ​

Returns a field by its UID.

View source

Arguments ​

  • $fieldUid (string) – The field’s UID

Returns ​

craft\base\FieldInterface, null – The field, or null if it doesn’t exist

getFieldIdsByLayoutId() ​

Since
3.1.24

Returns the field IDs for a given layout ID.

View source

Arguments ​

  • $layoutId (integer) – The field layout ID

Returns ​

integer[]

getFieldIdsByLayoutIds() ​

Returns the field IDs grouped by layout IDs, for a given set of layout IDs.

View source

Arguments ​

  • $layoutIds (integer[]) – The field layout IDs

Returns ​

array

getFieldTypesWithContent() ​

Returns all field types that have a column in the content table.

View source

Returns ​

string[] – The field type classes

getFieldVersion() ​

Since
3.7.21

Returns the current field version.

View source

Returns ​

string, null

getFieldsByElementType() ​

Returns all of the fields used by a given element type.

View source

Arguments ​

Returns ​

craft\base\FieldInterface[] – The fields

getFieldsByGroupId() ​

Returns all the fields in a given group.

View source

Arguments ​

  • $groupId (integer) – The field group’s ID

Returns ​

craft\base\FieldInterface[] – The fields

getFieldsByLayoutId() ​

Returns the fields in a field layout, identified by its ID.

View source

Arguments ​

  • $layoutId (integer) – The field layout’s ID

Returns ​

craft\base\FieldInterface[] – The fields

getFieldsWithContent() ​

Returns all fields that have a column in the content table.

View source

Arguments ​

Returns ​

craft\base\FieldInterface[] – The fields

getFieldsWithoutContent() ​

Since
3.7.60

Returns all fields that don’t have a column in the content table.

View source

Arguments ​

Returns ​

craft\base\FieldInterface[] – The fields

getGroupById() ​

Returns a field group by its ID.

View source

Arguments ​

  • $groupId (integer) – The field group’s ID

Returns ​

craft\models\FieldGroup, null – The field group, or null if it doesn’t exist

getGroupByUid() ​

Since
3.3.0

Returns a field group by its UID.

View source

Arguments ​

  • $groupUid (string) – The field group’s UID

Returns ​

craft\models\FieldGroup, null – The field group, or null if it doesn’t exist

getLayoutById() ​

Returns a field layout by its ID.

View source

Arguments ​

  • $layoutId (integer) – The field layout’s ID

Returns ​

craft\models\FieldLayout, null – The field layout, or null if it doesn’t exist

getLayoutByType() ​

Returns a field layout by its associated element type.

View source

Arguments ​

  • $type (string) – The associated element type

Returns ​

craft\models\FieldLayout – The field layout

getLayoutTabsById() ​

Returns a layout's tabs by its ID.

View source

Arguments ​

  • $layoutId (integer) – The field layout’s ID

Returns ​

craft\models\FieldLayoutTab[] – The field layout’s tabs

getLayoutsByIds() ​

Since
3.7.27

Returns field layouts by their IDs.

View source

Arguments ​

  • $layoutIds (integer[]) – The field layouts’ IDs

Returns ​

craft\models\FieldLayout[] – The field layouts

getLayoutsByType() ​

Since
3.5.0

Returns all of the field layouts associated with a given element type.

View source

Arguments ​

Returns ​

craft\models\FieldLayout[] – The field layouts

handleChangedField() ​

Handle field changes.

View source

Arguments ​

Throws ​

handleChangedGroup() ​

Handle field group change

View source

Arguments ​

handleDeletedField() ​

Handle a field getting deleted.

View source

Arguments ​

handleDeletedGroup() ​

Handle field group getting deleted.

View source

Arguments ​

prepFieldForSave() ​

Since
3.1.2

Preps a field to be saved.

View source

Arguments ​

refreshFields() ​

Since
3.0.20

Refreshes the internal field cache.

This should be called whenever a field is updated or deleted directly in the database, rather than going through this service.

View source

restoreLayoutById() ​

Since
3.1.0

Restores a field layout by its ID.

View source

Arguments ​

  • $id (integer) – The field layout’s ID

Returns ​

boolean – Whether the layout was restored successfully

saveField() ​

Saves a field.

View source

Arguments ​

Returns ​

boolean – Whether the field was saved successfully

Throws ​

saveGroup() ​

Saves a field group.

View source

Arguments ​

Returns ​

boolean – Whether the field group was saved successfully

saveLayout() ​

Saves a field layout.

View source

Arguments ​

Returns ​

boolean – Whether the field layout was saved successfully

Throws ​

updateFieldVersion() ​

Sets a new field version, so the CustomFieldBehavior class will get regenerated on the next request.

View source

Protected Methods ​

MethodDescription
updateColumn()Adds/updates a field’s content table column.

updateColumn() ​

Since
3.7.39

Adds/updates a field’s content table column.

View source

Arguments ​

Returns ​

void

Constants ​

ConstantDescription
CONFIG_FIELDGROUP_KEY
CONFIG_FIELDS_KEY

Events ​

EVENT_AFTER_DELETE_FIELD ​

Type
craft\events\FieldEvent

The event that is triggered after a field is deleted.


EVENT_AFTER_DELETE_FIELD_GROUP ​

Type
craft\events\FieldGroupEvent

The event that is triggered after a field group is deleted.


EVENT_AFTER_DELETE_FIELD_LAYOUT ​

Type
craft\events\FieldLayoutEvent

The event that is triggered after a field layout is deleted.


EVENT_AFTER_SAVE_FIELD ​

Type
craft\events\FieldEvent

The event that is triggered after a field is saved.


EVENT_AFTER_SAVE_FIELD_GROUP ​

Type
craft\events\FieldGroupEvent

The event that is triggered after a field group is saved.


EVENT_AFTER_SAVE_FIELD_LAYOUT ​

Type
craft\events\FieldLayoutEvent

The event that is triggered after a field layout is saved.


EVENT_BEFORE_APPLY_FIELD_DELETE ​

Type
craft\events\FieldEvent
Since
3.1.0

The event that is triggered before a field delete is applied to the database.


EVENT_BEFORE_APPLY_GROUP_DELETE ​

Type
craft\events\FieldGroupEvent
Since
3.1.0

The event that is triggered before a field group delete is applied to the database.


EVENT_BEFORE_DELETE_FIELD ​

Type
craft\events\FieldEvent

The event that is triggered before a field is deleted.


EVENT_BEFORE_DELETE_FIELD_GROUP ​

Type
craft\events\FieldGroupEvent

The event that is triggered before a field group is deleted.


EVENT_BEFORE_DELETE_FIELD_LAYOUT ​

Type
craft\events\FieldLayoutEvent

The event that is triggered before a field layout is deleted.


EVENT_BEFORE_SAVE_FIELD ​

Type
craft\events\FieldEvent

The event that is triggered before a field is saved.


EVENT_BEFORE_SAVE_FIELD_GROUP ​

Type
craft\events\FieldGroupEvent

The event that is triggered before a field group is saved.


EVENT_BEFORE_SAVE_FIELD_LAYOUT ​

Type
craft\events\FieldLayoutEvent

The event that is triggered before a field layout is saved.


EVENT_REGISTER_FIELD_TYPES ​

Type
craft\events\RegisterComponentTypesEvent

The event that is triggered when registering field types.

Field types must implement craft\base\FieldInterface. craft\base\Field provides a base implementation.

See Field Types for documentation on creating field types.


Example ​

php
use craft\events\RegisterComponentTypesEvent;
use craft\services\Fields;
use yii\base\Event;

Event::on(Fields::class,
    Fields::EVENT_REGISTER_FIELD_TYPES,
    function(RegisterComponentTypesEvent $event) {
        $event->types[] = MyFieldType::class;
    }
);