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->getFields().
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 |
| 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
- 4.3.2
The fields
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. |
| 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. |
| createLayout() | Creates a field layout from the given config. |
| 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. |
| 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. |
| getFieldsByGroupId() | Returns all the fields in a given group. |
| getFieldsByType() | Returns all fields of a certain type. |
| 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(s). |
| 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(string)
Throws ​
- Throwable
if database error
applyFieldSave() ​
- Since
- 3.1.0
Applies a field save to the database.
Arguments ​
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(class-string<\craft\services\T>, array) – The field’s class name, or its config, with atypevalue and optionally asettingsvalue
Returns ​
\craft\services\T – The field
createFieldConfig() ​
- Since
- 3.1.0
Returns the config for the given field.
Arguments ​
$field(craft\base\FieldInterface)
Returns ​
createLayout() ​
- Since
- 4.0.0
Creates a field layout from the given config.
Arguments ​
$config(array)
Returns ​
createLayoutElement() ​
- Since
- 3.5.0
Creates a field layout element instance from its config.
Arguments ​
$config(array)
Returns ​
\craft\services\T
Throws ​
- yii\base\InvalidArgumentException
if$config['type']does not implement craft\base\FieldLayoutElement
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(class-string<\craft\base\ElementInterface>) – 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 tofalseto 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 tofalseto 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
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 ​
getFieldsByGroupId() ​
Returns all the fields in a given group.
Arguments ​
$groupId(integer) – The field group’s ID
Returns ​
craft\base\FieldInterface[] – The fields
getFieldsByType() ​
- Since
- 4.4.0
Returns all fields of a certain type.
Arguments ​
$type(class-string<\craft\base\FieldInterface>) – The field type$context(string, string[], false, null) – The field context(s) to fetch fields from. Defaults to craft\services\Content::$fieldContext. Set tofalseto get all fields regardless of context.
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 tofalseto get all fields regardless of context.
Returns ​
craft\base\FieldInterface[] – The fields
getFieldsWithoutContent() ​
- Since
- 4.3.2
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 tofalseto 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(class-string<\craft\base\ElementInterface>) – The associated element type
Returns ​
craft\models\FieldLayout – The field layout
getLayoutTabsById() ​
DEPRECATED
Deprecated in 4.6.0
Returns a layout's tabs by its ID(s).
Arguments ​
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(class-string<\craft\base\ElementInterface>)
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)$handleOverflowData(boolean)
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_FIELD_SAVE ​
- Type
- craft\events\ApplyFieldSaveEvent
- Since
- 4.13.0
The event that is triggered before a field save 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_DEFINE_COMPATIBLE_FIELD_TYPES ​
- Type
- craft\events\DefineCompatibleFieldTypesEvent
- Since
- 4.5.7
The event that is triggered when defining the compatible field types for a field.
See also getCompatibleFieldTypes()
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;
}
);