FieldLayout ​
- Type
- Class
- Namespace
- craft\models
- Inherits
- craft\models\FieldLayout » craft\base\Model » yii\base\Model » yii\base\Component » yii\base\BaseObject
- Implements
- ArrayAccess, IteratorAggregate, craft\base\ModelInterface, yii\base\Arrayable, yii\base\Configurable, yii\base\StaticInstanceInterface
- Uses traits
- craft\base\ClonefixTrait, yii\base\ArrayableTrait, yii\base\StaticInstanceTrait
- Since
- 3.0.0
FieldLayout model class.
Public Properties ​
allElements ​
- Type
- craft\base\FieldLayoutElement[]
- Default value
null- Access
- Read-only
- Since
- 5.3.0
availableCustomFields ​
- Type
\craft\fieldlayoutelements\BaseField[][]- Default value
null- Access
- Read-only
- Since
- 3.5.0
availableNativeFields ​
- Type
- craft\fieldlayoutelements\BaseField[]
- Default value
null- Access
- Read-only
- Since
- 3.5.0
availableUiElements ​
- Type
- craft\base\FieldLayoutElement[]
- Default value
null- Access
- Read-only
- Since
- 3.5.0
cardBodyAttributes ​
- Type
- array
- Default value
null- Access
- Read-only
- Since
- 5.5.0
cardBodyElements ​
- Type
- array
- Default value
null- Access
- Read-only
- Since
- 5.5.0
cardThumbAlignment ​
- Type
- string
- Default value
null- Access
- Read-only
- Since
- 5.8.0
start or end
cardView ​
- Type
- array
- Default value
null- Since
- 5.5.0
The layout’s card view makeup.
config ​
customFieldElements ​
- Type
- craft\fieldlayoutelements\CustomField[]
- Default value
null- Access
- Read-only
- Since
- 3.7.27
customFields ​
- Type
- craft\base\FieldInterface[]
- Default value
null- Access
- Read-only
- Since
- 4.0.0
generatedFields ​
- Type
- array
- Default value
null- Since
- 5.8.0
id ​
ID
provider ​
- Type
- craft\base\FieldLayoutProviderInterface, null
- Default value
null- Since
- 4.5.0
The field layout’s provider.
reservedFieldHandles ​
Reserved custom field handles
tabs ​
- Type
- craft\models\FieldLayoutTab[]
- Default value
null
The layout’s tabs.
thumbField ​
- Type
- craft\fieldlayoutelements\BaseField, null
- Default value
null- Access
- Read-only
- Since
- 5.0.0
type ​
- Type
class-string<\craft\base\ElementInterface>, null- Default value
null
The element type
uid ​
- Type
- string
- Default value
null
UID
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() | |
| __get() | Returns the value of a component property. |
| __isset() | Checks if a property is set, i.e. defined and not null. |
| __set() | Sets the value of a component property. |
| __unset() | Sets a component property to be null. |
| activeAttributes() | Returns the attribute names that are subject to validation in the current scenario. |
| addError() | Adds a new error to the specified attribute. |
| addErrors() | Adds a list of errors. |
| addModelErrors() | Adds errors from another model, with a given attribute name prefix. |
| afterValidate() | This method is invoked after validation ends. |
| attachBehavior() | Attaches a behavior to this component. |
| attachBehaviors() | Attaches a list of behaviors to the component. |
| attributeHints() | Returns the attribute hints. |
| attributeLabels() | Returns the attribute labels. |
| attributes() | Returns the list of attribute names. |
| beforeValidate() | This method is invoked before validation starts. |
| 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. |
| clearErrors() | Removes errors for all attributes or a single attribute. |
| createForm() | Creates a new craft\models\FieldLayoutForm object for the given element. |
| createFromConfig() | Creates a new field layout from the given config. |
| createValidators() | Creates validator objects based on the validation rules specified in rules(). |
| datetimeAttributes() | Returns the names of any attributes that should hold DateTime values. |
| detachBehavior() | Detaches a behavior from the component. |
| detachBehaviors() | Detaches all behaviors from the component. |
| ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. |
| extraFields() | Returns the list of fields that can be expanded further and returned by toArray(). |
| fields() | Returns the list of fields that should be returned by default by toArray() when no specific fields are specified. |
| formName() | Returns the form name that this model class should use. |
| generateAttributeLabel() | Generates a user friendly attribute label based on the give attribute name. |
| getActiveValidators() | Returns the validators applicable to the current scenario. |
| getAllElements() | Returns the layout elements of a given type. |
| getAttributeHint() | Returns the text hint for the specified attribute. |
| getAttributeLabel() | Returns the text label for the specified attribute. |
| getAttributes() | Returns attribute values. |
| getAvailableCustomFields() | Returns the available fields, grouped by field group name. |
| getAvailableNativeFields() | Returns the available native fields. |
| getAvailableUiElements() | Returns the layout elements that are available to the field layout, grouped by the type name and (optionally) group name. |
| getBehavior() | Returns the named behavior object. |
| getBehaviors() | Returns all behaviors attached to this component. |
| getCardBodyAttributes() | Returns the attributes that should be used in element card bodies. |
| getCardBodyElements() | Returns the fields and attributes that should be used in element card bodies in the correct order. |
| getCardBodyFields() | Returns the custom fields that should be used in element card bodies. |
| getCardThumbAlignment() | Returns the thumbnail alignment that should be used in element cards. |
| getCardView() | Returns the layout’s card view makeup. |
| getConfig() | Returns the field layout’s config. |
| getCustomFieldElements() | Returns the layout elements representing custom fields. |
| getCustomFields() | Returns the custom fields included in the layout. |
| getEditableCustomFields() | Returns the custom fields included in the layout, taking editability conditions into account. |
| getElementByUid() | Returns a layout element by its UID. |
| getElementsByType() | Returns the layout elements of a given type. |
| getErrorSummary() | Returns the errors for all attributes as a one-dimensional array. |
| getErrors() | Returns the errors for all attributes or a single attribute. |
| getField() | Returns a field that’s included in the layout by a callback or its attribute name. |
| getFieldByHandle() | Returns a custom field by its handle. |
| getFieldById() | Returns a custom field by its ID. |
| getFieldByUid() | Returns a custom field by its UUID. |
| getFields() | Returns all fields in the layout that match a given callback. |
| getFirstElementByType() | Returns the first layout element of a given type. |
| getFirstError() | Returns the first error of the specified attribute. |
| getFirstErrors() | Returns the first error of every attribute in the model. |
| getFirstVisibleElementByType() | Returns the first visible layout element of a given type, taking conditions into account. |
| getGeneratedFieldByUid() | Returns a generated field by its UUID. |
| getGeneratedFields() | Returns the layout’s generated fields. |
| getIterator() | Returns an iterator for traversing the attributes in the model. |
| getScenario() | Returns the scenario that this model is used in. |
| getTabs() | Returns the layout’s tabs. |
| getThumbField() | Returns the field layout’s designated thumbnail field. |
| getValidators() | Returns all the validators declared in rules(). |
| getVisibleCustomFieldElements() | Returns the visible layout elements representing custom fields, taking conditions into account. |
| getVisibleCustomFields() | Returns the custom fields included in the layout, taking visibility conditions into account. |
| getVisibleElementsByType() | Returns the visible layout elements of a given type, taking conditions into account. |
| hasErrors() | Returns a value indicating whether there is any validation error. |
| 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. |
| instance() | Returns static class instance, which can be used to obtain meta information. |
| isAttributeActive() | Returns a value indicating whether the attribute is active in the current scenario. |
| isAttributeRequired() | Returns a value indicating whether the attribute is required. |
| isAttributeSafe() | Returns a value indicating whether the attribute is safe for massive assignments. |
| isFieldIncluded() | Returns whether a field is included in the layout by a callback or its attribute |
| isUiElementIncluded() | Returns whether UI Element is included in the field layout. |
| load() | Populates the model with input data. |
| loadMultiple() | Populates a set of models with the data from end user. |
| off() | Detaches an existing event handler from this component. |
| offsetExists() | Returns whether there is an element at the specified offset. |
| offsetGet() | Returns the element at the specified offset. |
| offsetSet() | Sets the element at the specified offset. |
| offsetUnset() | Sets the element value at the specified offset to null. |
| on() | Attaches an event handler to an event. |
| onUnsafeAttribute() | This method is invoked when an unsafe attribute is being massively assigned. |
| prependElements() | Prepends elements to the first tab. |
| resetUids() | Resets the field layout’s UUIDs. |
| rules() | Returns the validation rules for attributes. |
| safeAttributes() | Returns the attribute names that are safe to be massively assigned in the current scenario. |
| scenarios() | Returns a list of scenarios and the corresponding active attributes. |
| setAttributes() | Sets the attribute values in a massive way. |
| setCardThumbAlignment() | Sets the thumbnail alignment that should be used in element cards. |
| setCardView() | Sets the layout’s card view makeup. |
| setGeneratedFields() | Sets the layout’s generated fields. |
| setScenario() | Sets the scenario for the model. |
| setTabs() | Sets the layout’s tabs. |
| toArray() | Converts the model into an array. |
| trigger() | Triggers an event. |
| validate() | Performs the data validation. |
| validateFields() | Validates the field selections. |
| validateMultiple() | Validates multiple models. |
createForm() ​
- Since
- 3.5.0
Creates a new craft\models\FieldLayoutForm object for the given element.
The $config array can contain the following keys:
tabIdPrefix– prefix that should be applied to the tab content containers’idattributesnamespace– Namespace that should be applied to the tab contentsregisterDeltas– Whether delta name registration should be enabled/disabled for the form (by default its state will be left alone)visibleElements– Lists of already-visible layout elements from craft\models\FieldLayoutForm::getVisibleElements()
Arguments ​
$element(craft\base\ElementInterface, null) – The element the form is being rendered for$static(boolean) – Whether the form should be static (non-interactive)$config(array) – The craft\models\FieldLayoutForm config
Returns ​
createFromConfig() ​
- Since
- 3.1.0
Creates a new field layout from the given config.
Arguments ​
$config(array)
Returns ​
self
getAllElements() ​
- Since
- 5.3.0
Returns the layout elements of a given type.
Returns ​
craft\base\FieldLayoutElement[]
getAvailableCustomFields() ​
- Since
- 3.5.0
Returns the available fields, grouped by field group name.
Returns ​
\craft\fieldlayoutelements\BaseField[][]
getAvailableNativeFields() ​
- Since
- 3.5.0
Returns the available native fields.
Returns ​
craft\fieldlayoutelements\BaseField[]
getAvailableUiElements() ​
- Since
- 3.5.0
Returns the layout elements that are available to the field layout, grouped by the type name and (optionally) group name.
Returns ​
craft\base\FieldLayoutElement[]
getCardBodyAttributes() ​
- Since
- 5.5.0
Returns the attributes that should be used in element card bodies.
Returns ​
getCardBodyElements() ​
- Since
- 5.5.0
Returns the fields and attributes that should be used in element card bodies in the correct order.
Arguments ​
$element(craft\base\ElementInterface, null)$cardElements
Returns ​
getCardBodyFields() ​
- Since
- 5.0.0
Returns the custom fields that should be used in element card bodies.
Arguments ​
$element(craft\base\ElementInterface, null)
Returns ​
craft\fieldlayoutelements\BaseField[]
getCardThumbAlignment() ​
- Since
- 5.8.0
Returns the thumbnail alignment that should be used in element cards.
Returns ​
string – start or end
getCardView() ​
- Since
- 5.5.0
Returns the layout’s card view makeup.
Returns ​
array – The layout’s card view makeup.
getConfig() ​
- Since
- 3.1.0
Returns the field layout’s config.
Returns ​
getCustomFieldElements() ​
- Since
- 3.7.27
Returns the layout elements representing custom fields.
Returns ​
craft\fieldlayoutelements\CustomField[]
getCustomFields() ​
- Since
- 4.0.0
Returns the custom fields included in the layout.
Returns ​
getEditableCustomFields() ​
- Since
- 5.7.0
Returns the custom fields included in the layout, taking editability conditions into account.
Arguments ​
$element(craft\base\ElementInterface)
Returns ​
getElementByUid() ​
- Since
- 5.0.0
Returns a layout element by its UID.
Arguments ​
$uid(string)
Returns ​
craft\base\FieldLayoutElement, null
getElementsByType() ​
- Since
- 4.0.0
Returns the layout elements of a given type.
Arguments ​
$class(class-string<\craft\models\T>)
Returns ​
\craft\models\T[]
getField() ​
- Since
- 3.5.0
Returns a field that’s included in the layout by a callback or its attribute name.
Arguments ​
Returns ​
craft\fieldlayoutelements\BaseField
Throws ​
- yii\base\InvalidArgumentException
if the field isn’t included
getFieldByHandle() ​
Returns a custom field by its handle.
Arguments ​
$handle(string) – The field handle.
Returns ​
craft\base\FieldInterface, null
getFieldById() ​
- Since
- 5.0.0
Returns a custom field by its ID.
Arguments ​
$id(integer) – The field ID.
Returns ​
craft\base\FieldInterface, null
getFieldByUid() ​
- Since
- 5.0.0
Returns a custom field by its UUID.
Arguments ​
$uid(string) – The field UUID.
Returns ​
craft\base\FieldInterface, null
getFields() ​
- Since
- 5.8.0
Returns all fields in the layout that match a given callback.
Arguments ​
$filter(callable)
Returns ​
craft\fieldlayoutelements\BaseField[]
Throws ​
- yii\base\InvalidArgumentException
if the field isn’t included
getFirstElementByType() ​
- Since
- 4.0.0
Returns the first layout element of a given type.
Arguments ​
$class(class-string<\craft\models\T>)
Returns ​
\craft\models\T, null – The layout element, or null if none were found
getFirstVisibleElementByType() ​
- Since
- 4.0.0
Returns the first visible layout element of a given type, taking conditions into account.
Arguments ​
$class(class-string<\craft\models\T>)$element(craft\base\ElementInterface)
Returns ​
\craft\models\T, null – The layout element, or null if none were found
getGeneratedFieldByUid() ​
- Since
- 5.8.0
Returns a generated field by its UUID.
Arguments ​
$uid
Returns ​
getGeneratedFields() ​
- Since
- 5.8.0
Returns the layout’s generated fields.
Returns ​
getTabs() ​
Returns the layout’s tabs.
Returns ​
craft\models\FieldLayoutTab[] – The layout’s tabs.
getThumbField() ​
- Since
- 5.0.0
Returns the field layout’s designated thumbnail field.
Returns ​
craft\fieldlayoutelements\BaseField, null
getVisibleCustomFieldElements() ​
- Since
- 4.1.4
Returns the visible layout elements representing custom fields, taking conditions into account.
Arguments ​
$element(craft\base\ElementInterface)
Returns ​
craft\fieldlayoutelements\CustomField[]
getVisibleCustomFields() ​
- Since
- 4.0.0
Returns the custom fields included in the layout, taking visibility conditions into account.
Arguments ​
$element(craft\base\ElementInterface)
Returns ​
getVisibleElementsByType() ​
- Since
- 4.0.0
Returns the visible layout elements of a given type, taking conditions into account.
Arguments ​
$class(class-string<\craft\models\T>)$element(craft\base\ElementInterface)
Returns ​
\craft\models\T[]
init() ​
Initializes the object.
This method is invoked at the end of the constructor after the object is initialized with the given configuration.
isFieldIncluded() ​
- Since
- 3.5.0
Returns whether a field is included in the layout by a callback or its attribute
Arguments ​
Returns ​
isUiElementIncluded() ​
- Since
- 5.7.12
Returns whether UI Element is included in the field layout.
Arguments ​
$filter(callable)
Returns ​
prependElements() ​
- Since
- 5.5.0
Prepends elements to the first tab.
Arguments ​
$elements(craft\base\FieldLayoutElement[])
resetUids() ​
- Since
- 5.8.0
Resets the field layout’s UUIDs.
setCardThumbAlignment() ​
- Since
- 5.8.0
Sets the thumbnail alignment that should be used in element cards.
Arguments ​
setCardView() ​
- Since
- 5.5.0
Sets the layout’s card view makeup.
Arguments ​
setGeneratedFields() ​
- Since
- 5.8.0
Sets the layout’s generated fields.
Arguments ​
setTabs() ​
Sets the layout’s tabs.
Arguments ​
$tabs(array) – An array of the layout’s tabs, which can either be FieldLayoutTab objects or arrays defining the tab’s attributes.
validateFields() ​
- Since
- 3.7.0
Validates the field selections.
Protected Methods ​
| Method | Description |
|---|---|
| defineBehaviors() | Returns the behaviors to attach to this class. |
| defineRules() | Returns the validation rules for attributes. |
| extractFieldsFor() | Extract nested fields from a fields collection for a given root field Nested fields are separated with dots (.). e.g: "item.id" The previous example would extract "id". |
| extractRootFields() | Extracts the root field names from nested fields. |
| resolveFields() | Determines which fields can be returned by toArray(). |
defineRules() ​
- Since
- 3.4.0
Returns the validation rules for attributes.
See rules() for details about what should be returned.
Models should override this method instead of rules() so EVENT_DEFINE_RULES handlers can modify the class-defined rules.
Returns ​
Constants ​
| Constant | Description |
|---|---|
SCENARIO_DEFAULT | The name of the default scenario. |
Events ​
EVENT_CREATE_FORM ​
- Type
- craft\events\CreateFieldLayoutFormEvent
- Since
- 3.6.0
The event that is triggered when creating a new field layout form.
use craft\elements\Entry;
use craft\events\CreateFieldLayoutFormEvent;
use craft\fieldlayoutelements\HorizontalRule;
use craft\fieldlayoutelements\StandardTextField;
use craft\fieldlayoutelements\Template;
use craft\models\FieldLayout;
use craft\models\FieldLayoutTab;
use yii\base\Event;
Event::on(
FieldLayout::class,
FieldLayout::EVENT_CREATE_FORM,
function(CreateFieldLayoutFormEvent $event) {
if ($event->element instanceof Entry) {
$event->tabs[] = new FieldLayoutTab([
'name' => 'My Tab',
'elements' => [
new StandardTextField([
'attribute' => 'myTextField',
'label' => 'My Text Field',
]),
new HorizontalRule(),
new Template([
'template' => '_layout-elements/info'
]),
],
]);
}
}
);See also createForm()
EVENT_DEFINE_CUSTOM_FIELDS ​
- Type
- craft\events\DefineFieldLayoutCustomFieldsEvent
- Since
- 4.2.0
The event that is triggered when defining the custom fields for the layout.
Note that fields set on craft\events\DefineFieldLayoutCustomFieldsEvent::$fields will be grouped by field group, indexed by the group names.
use craft\models\FieldLayout;
use craft\events\DefineFieldLayoutFieldsEvent;
use craft\fields\PlainText;
use yii\base\Event;
Event::on(
FieldLayout::class,
FieldLayout::EVENT_DEFINE_CUSTOM_FIELDS,
function(DefineFieldLayoutFieldsEvent $event) {
// @var FieldLayout $layout
$layout = $event->sender;
if ($layout->type === MyElementType::class) {
// Only allow Plain Text fields
foreach ($event->fields as $groupName => &$fields) {
$fields = array_filter($fields, fn($field) => $field instanceof PlainText);
}
}
}
);See also getAvailableCustomFields()
EVENT_DEFINE_NATIVE_FIELDS ​
- Type
- craft\events\DefineFieldLayoutFieldsEvent
- Since
- 4.0.0
The event that is triggered when defining the native (not custom) fields for the layout.
use craft\models\FieldLayout;
use craft\events\DefineFieldLayoutFieldsEvent;
use yii\base\Event;
Event::on(
FieldLayout::class,
FieldLayout::EVENT_DEFINE_NATIVE_FIELDS,
function(DefineFieldLayoutFieldsEvent $event) {
// @var FieldLayout $layout
$layout = $event->sender;
if ($layout->type === MyElementType::class) {
$event->fields[] = MyNativeField::class;
}
}
);See also getAvailableNativeFields()
EVENT_DEFINE_UI_ELEMENTS ​
- Type
- craft\events\DefineFieldLayoutElementsEvent
- Since
- 3.5.0
The event that is triggered when defining UI elements for the layout.
use craft\models\FieldLayout;
use craft\events\DefineFieldLayoutElementsEvent;
use yii\base\Event;
Event::on(
FieldLayout::class,
FieldLayout::EVENT_DEFINE_UI_ELEMENTS,
function(DefineFieldLayoutElementsEvent $event) {
$event->elements[] = MyUiElement::class;
}
);See also getAvailableUiElements()