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 |
| allLayouts | craft\models\FieldLayout[] |
| behaviors | yii\base\Behavior – List of behaviors attached to this component. |
| fieldContext | string – The active field context |
| fieldTypesWithContent | string[] – The field type classes |
| fieldVersion | string, null |
| fieldsWithContent | craft\base\FieldInterface[] – The fields |
| fieldsWithoutContent | craft\base\FieldInterface[] – The fields |
| nestedEntryFieldTypes | string[] – The field type classes which manage nested entries |
| relationalFieldTypes | string[] – The available relational field type classes |
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
allLayouts ​
- Type
- craft\models\FieldLayout[]
- Default value
null- Access
- Read-only
- Since
- 5.0.0
fieldContext ​
- Type
- string
- Default value
'global'- Since
- 5.0.0
The active field context
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
nestedEntryFieldTypes ​
- Type
- string[]
- Default value
null- Access
- Read-only
The field type classes which manage nested entries
relationalFieldTypes ​
- Type
- string[]
- Default value
null- Access
- Read-only
- Since
- 5.1.6
The available relational field type classes
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. |
| areFieldTypesCompatible() | Returns whether the two given field types are considered compatible with each other. |
| 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. |
| 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. |
| findFieldUsages() | Returns all the field layouts that contain the given field. |
| getAllFieldTypes() | Returns all available field type classes. |
| getAllFields() | Returns all fields within a field context(s). |
| getAllLayouts() | Returns all saved field layouts. |
| 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. |
| getFieldTypesWithContent() | Returns all field types that have a column in the content table. |
| getFieldVersion() | Returns the current field version. |
| getFieldsByType() | Returns all fields of a certain type. |
| getFieldsWithContent() | Returns all fields that store content in the elements_sites.content table. |
| getFieldsWithoutContent() | Returns all fields that don’t store content in the elements_sites.content table. |
| getLayoutById() | Returns a field layout by its ID. |
| getLayoutByType() | Returns a field layout by its associated element type. |
| getLayoutByUid() | Returns a field layout by its UUID. |
| getLayoutsByIds() | Returns field layouts by their IDs. |
| getLayoutsByType() | Returns all of the field layouts associated with a given element type. |
| getNestedEntryFieldTypes() | Returns all field types which manage nested entries. |
| getRelationalFieldTypes() | Returns all available relational field type classes. |
| handleChangedField() | Handle field changes. |
| handleDeletedField() | Handle a field 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. |
| 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 ​
areFieldTypesCompatible() ​
- Since
- 5.3.0
Returns whether the two given field types are considered compatible with each other.
Arguments ​
$fieldA(class-string<\craft\base\FieldInterface>)$fieldB(class-string<\craft\base\FieldInterface>)
Returns ​
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
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\Fields::$fieldContext)
Returns ​
boolean – Whether a field with that handle exists
findFieldUsages() ​
- Since
- 5.0.0
Returns all the field layouts that contain the given field.
Arguments ​
$field(craft\base\FieldInterface)
Returns ​
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\Fields::$fieldContext. Set tofalseto get all fields regardless of context.
Returns ​
craft\base\FieldInterface[] – The fields
getAllLayouts() ​
- Since
- 5.0.0
Returns all saved field layouts.
Returns ​
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\Fields::$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
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 ​
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\Fields::$fieldContext. Set tofalseto get all fields regardless of context.
Returns ​
craft\base\FieldInterface[] – The fields
getFieldsWithContent() ​
Returns all fields that store content in the elements_sites.content table.
Arguments ​
$context(string, string[], false, null) – The field context(s) to fetch fields from. Defaults to craft\services\Fields::$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 store content in the elements_sites.content table.
Arguments ​
$context(string, string[], false, null) – The field context(s) to fetch fields from. Defaults to craft\services\Fields::$fieldContext. Set tofalseto get all fields regardless of context.
Returns ​
craft\base\FieldInterface[] – The fields
getLayoutById() ​
Returns a field layout by its ID.
Arguments ​
$layoutId(integer) – The field layout’s ID$withTrashed(boolean) – Whether to return the field layout even if it’s soft-deleted
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$create(boolean) – Whether to create a field layout if one doesn’t exist
Returns ​
craft\models\FieldLayout, null – The field layout
getLayoutByUid() ​
Returns a field layout by its UUID.
Arguments ​
$uid(string) – The field layout’s UUID
Returns ​
craft\models\FieldLayout, null – The field layout, or null if it doesn’t exist
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
getNestedEntryFieldTypes() ​
Returns all field types which manage nested entries.
Returns ​
string[] – The field type classes which manage nested entries
getRelationalFieldTypes() ​
- Since
- 5.1.6
Returns all available relational field type classes.
Returns ​
string[] – The available relational field type classes
handleChangedField() ​
Handle field changes.
Arguments ​
$event(craft\events\ConfigEvent)
Throws ​
handleDeletedField() ​
Handle a field 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
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.
Events ​
EVENT_AFTER_DELETE_FIELD ​
The event that is triggered after a field 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_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
- 5.5.0
The event that is triggered before a field save is applied to the database.
EVENT_BEFORE_DELETE_FIELD ​
The event that is triggered before a field 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_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;
}
);EVENT_REGISTER_NESTED_ENTRY_FIELD_TYPES ​
- Type
- craft\events\RegisterComponentTypesEvent
- Since
- 5.0.0
The event that is triggered when registering field types which manage nested entries.
These field types must implement craft\base\ElementContainerFieldInterface.