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
.
Public Properties ​
Property | Description |
---|---|
allFieldTypes | string[] – The available field type classes |
allFields | craft\base\FieldInterface[] – The fields |
allGroups | craft\models\FieldGroup[] – The field groups |
behaviors | yii\base\Behavior – List of behaviors attached to this component. |
fieldTypesWithContent | string[] – The field type classes |
fieldVersion | string, null |
fieldsWithContent | craft\base\FieldInterface[] – The fields |
fieldsWithoutContent | craft\base\FieldInterface[] – The fields |
ignoreProjectConfigChanges | boolean – Whether to ignore changes to the project config. |
oldFieldColumnPrefix | string, null |
allFieldTypes
​
- Type
- string[]
- Default value
null
- Access
- Read-only
The available field type classes
allFields
​
- Type
- craft\base\FieldInterface[]
- Default value
null
- Access
- Read-only
The fields
allGroups
​
- Type
- craft\models\FieldGroup[]
- Default value
null
- Access
- Read-only
The field groups
fieldTypesWithContent
​
- Type
- string[]
- Default value
null
- Access
- Read-only
The field type classes
fieldVersion
​
fieldsWithContent
​
- Type
- craft\base\FieldInterface[]
- Default value
null
- Access
- Read-only
The fields
fieldsWithoutContent
​
- Type
- craft\base\FieldInterface[]
- Default value
null
- Access
- Read-only
- Since
- 3.7.60
The fields
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.
oldFieldColumnPrefix
​
Public Methods ​
Method | Description |
---|---|
__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
applyFieldDelete()
​
- Since
- 3.1.0
Applies a field delete to the database.
Arguments ​
$fieldUid
(mixed
)
Throws ​
- Throwable
if database error
applyFieldSave()
​
- Since
- 3.1.0
Applies a field save to the database.
Arguments ​
assembleLayout()
​
DEPRECATED
Deprecated in 3.5.0.
Assembles a field layout.
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.
Arguments ​
Returns ​
craft\models\FieldLayout – The field layout
Throws ​
createField()
​
Creates a field with a given config.
Arguments ​
$config
(mixed
) – The field’s class name, or its config, with atype
value and optionally asettings
value
Returns ​
craft\base\FieldInterface – The field
createFieldConfig()
​
- Since
- 3.1.0
Returns the config for the given field.
Arguments ​
$field
(craft\base\FieldInterface)
Returns ​
createLayoutElement()
​
- Since
- 3.5.0
Creates a field layout element instance from its config.
Arguments ​
$config
(array)
Returns ​
craft\base\FieldLayoutElementInterface
Throws ​
- yii\base\InvalidArgumentException
if$config['type']
does not implement craft\base\FieldLayoutElementInterface
deleteField()
​
Deletes a field.
Arguments ​
$field
(craft\base\FieldInterface) – The field
Returns ​
boolean – Whether the field was deleted successfully
Throws ​
- Throwable
if reasons
deleteFieldById()
​
Deletes a field by its ID.
Arguments ​
$fieldId
(integer) – The field’s ID
Returns ​
boolean – Whether the field was deleted successfully
deleteGroup()
​
Deletes a field group.
Arguments ​
$group
(craft\models\FieldGroup) – The field group
Returns ​
boolean – Whether the field group was deleted successfully
deleteGroupById()
​
Deletes a field group by its ID.
Arguments ​
$groupId
(integer) – The field group’s ID
Returns ​
boolean – Whether the field group was deleted successfully
deleteLayout()
​
Deletes a field layout.
Arguments ​
$layout
(craft\models\FieldLayout) – The field layout
Returns ​
boolean – Whether the field layout was deleted successfully
deleteLayoutById()
​
Deletes a field layout(s) by its ID.
Arguments ​
Returns ​
boolean – Whether the field layout was deleted successfully
deleteLayoutsByType()
​
Deletes field layouts associated with a given element type.
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.
Arguments ​
$handle
(string) – The field handle$context
(string, null) – The field context (defauts to craft\services\Content::$fieldContext)
Returns ​
boolean – Whether a field with that handle exists
getAllFieldTypes()
​
Returns all available field type classes.
Returns ​
string[] – The available field type classes
getAllFields()
​
Returns all fields within a field context(s).
Arguments ​
$context
(string, string[], false, null) – The field context(s) to fetch fields from. Defaults to craft\services\Content::$fieldContext. Set tofalse
to get all fields regardless of context.
Returns ​
craft\base\FieldInterface[] – The fields
getAllGroups()
​
Returns all field groups.
Returns ​
craft\models\FieldGroup[] – The field groups
getCompatibleFieldTypes()
​
Returns all field types whose column types are considered compatible with a given field.
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.
Arguments ​
$handle
(string) – The field’s handle$context
(string, string[], false, null) – The field context(s) to fetch fields from. Defaults to craft\services\Content::$fieldContext. Set tofalse
to get all fields regardless of context.
Returns ​
craft\base\FieldInterface, null – The field, or null if it doesn’t exist
Example ​
$body = Craft::$app->fields->getFieldByHandle('body');
{% set body = craft.app.fields.getFieldByHandle('body') %}
{{ body.instructions }}
getFieldById()
​
Returns a field by its ID.
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.
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.
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.
Arguments ​
$layoutIds
(integer[]) – The field layout IDs
Returns ​
getFieldTypesWithContent()
​
Returns all field types that have a column in the content table.
Returns ​
string[] – The field type classes
getFieldVersion()
​
- Since
- 3.7.21
Returns the current field version.
Returns ​
getFieldsByElementType()
​
Returns all of the fields used by a given element type.
Arguments ​
$elementType
(string)
Returns ​
craft\base\FieldInterface[] – The fields
getFieldsByGroupId()
​
Returns all the fields in a given group.
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.
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.
Arguments ​
$context
(string, string[], false, null) – The field context(s) to fetch fields from. Defaults to craft\services\Content::$fieldContext. Set tofalse
to get all fields regardless of context.
Returns ​
craft\base\FieldInterface[] – The fields
getFieldsWithoutContent()
​
- Since
- 3.7.60
Returns all fields that don’t have a column in the content table.
Arguments ​
$context
(string, string[], false, null) – The field context(s) to fetch fields from. Defaults to craft\services\Content::$fieldContext. Set tofalse
to get all fields regardless of context.
Returns ​
craft\base\FieldInterface[] – The fields
getGroupById()
​
Returns a field group by its ID.
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.
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.
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.
Arguments ​
$type
(string) – The associated element type
Returns ​
craft\models\FieldLayout – The field layout
getLayoutTabsById()
​
Returns a layout's tabs by its ID.
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.
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.
Arguments ​
$type
(string)
Returns ​
craft\models\FieldLayout[] – The field layouts
handleChangedField()
​
Handle field changes.
Arguments ​
$event
(craft\events\ConfigEvent)
Throws ​
handleChangedGroup()
​
Handle field group change
Arguments ​
$event
(craft\events\ConfigEvent)
handleDeletedField()
​
Handle a field getting deleted.
Arguments ​
$event
(craft\events\ConfigEvent)
handleDeletedGroup()
​
Handle field group getting deleted.
Arguments ​
$event
(craft\events\ConfigEvent)
prepFieldForSave()
​
- Since
- 3.1.2
Preps a field to be saved.
Arguments ​
$field
(craft\base\FieldInterface)
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.
restoreLayoutById()
​
- Since
- 3.1.0
Restores a field layout by its ID.
Arguments ​
$id
(integer) – The field layout’s ID
Returns ​
boolean – Whether the layout was restored successfully
saveField()
​
Saves a field.
Arguments ​
$field
(craft\base\FieldInterface) – The Field to be saved$runValidation
(boolean) – Whether the field should be validated
Returns ​
boolean – Whether the field was saved successfully
Throws ​
- Throwable
if reasons
saveGroup()
​
Saves a field group.
Arguments ​
$group
(craft\models\FieldGroup) – The field group to be saved$runValidation
(boolean) – Whether the group should be validated
Returns ​
boolean – Whether the field group was saved successfully
saveLayout()
​
Saves a field layout.
Arguments ​
$layout
(craft\models\FieldLayout) – The field layout$runValidation
(boolean) – Whether the layout should be validated
Returns ​
boolean – Whether the field layout was saved successfully
Throws ​
- yii\base\Exception
if $layout->id is set to an invalid layout ID
updateFieldVersion()
​
Sets a new field version, so the CustomFieldBehavior class will get regenerated on the next request.
Protected Methods ​
Method | Description |
---|---|
updateColumn() | Adds/updates a field’s content table column. |
updateColumn()
​
- Since
- 3.7.39
Adds/updates a field’s content table column.
Arguments ​
$db
(craft\db\Connection)$transaction
(yii\db\Transaction)$table
(string)$oldName
(string, null)$newName
(string)$type
(string)
Returns ​
void
Constants ​
Constant | Description |
---|---|
CONFIG_FIELDGROUP_KEY | |
CONFIG_FIELDS_KEY |
Events ​
EVENT_AFTER_DELETE_FIELD ​
The event that is triggered after a field is deleted.
EVENT_AFTER_DELETE_FIELD_GROUP ​
The event that is triggered after a field group is deleted.
EVENT_AFTER_DELETE_FIELD_LAYOUT ​
The event that is triggered after a field layout is deleted.
EVENT_AFTER_SAVE_FIELD ​
The event that is triggered after a field is saved.
EVENT_AFTER_SAVE_FIELD_GROUP ​
The event that is triggered after a field group is saved.
EVENT_AFTER_SAVE_FIELD_LAYOUT ​
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 ​
The event that is triggered before a field is deleted.
EVENT_BEFORE_DELETE_FIELD_GROUP ​
The event that is triggered before a field group is deleted.
EVENT_BEFORE_DELETE_FIELD_LAYOUT ​
The event that is triggered before a field layout is deleted.
EVENT_BEFORE_SAVE_FIELD ​
The event that is triggered before a field is saved.
EVENT_BEFORE_SAVE_FIELD_GROUP ​
The event that is triggered before a field group is saved.
EVENT_BEFORE_SAVE_FIELD_LAYOUT ​
The event that is triggered before a field layout is saved.
EVENT_REGISTER_FIELD_TYPES ​
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 ​
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;
}
);