FieldLayout
- Type
- Class
- Namespace
- craft\models
- Inherits
- craft\models\FieldLayout » craft\base\Model » yii\base\Model (opens new window) » yii\base\Component (opens new window) » yii\base\BaseObject (opens new window)
- Implements
- ArrayAccess (opens new window), IteratorAggregate (opens new window), craft\base\ModelInterface, yii\base\Arrayable (opens new window), yii\base\Configurable (opens new window), yii\base\StaticInstanceInterface (opens new window)
- Uses traits
- craft\base\ClonefixTrait, yii\base\ArrayableTrait (opens new window), yii\base\StaticInstanceTrait (opens new window)
- Since
- 3.0.0
FieldLayout model class.
View source (opens new window)
# Public Properties
# availableCustomFields
- Type
\craft\fieldlayoutelements\BaseField[][]
- Default value
null
- Access
- Read-only
- Since
- 3.5.0
View source (opens new window)
# availableNativeFields
- Type
- craft\fieldlayoutelements\BaseField[]
- Default value
null
- Access
- Read-only
- Since
- 3.5.0
View source (opens new window)
# availableUiElements
- Type
- craft\base\FieldLayoutElement[]
- Default value
null
- Access
- Read-only
- Since
- 3.5.0
View source (opens new window)
# config
- Type
- array (opens new window), null (opens new window)
- Default value
null
- Access
- Read-only
- Since
- 3.1.0
View source (opens new window)
# customFieldElements
- Type
- craft\fieldlayoutelements\CustomField[]
- Default value
null
- Access
- Read-only
- Since
- 3.7.27
View source (opens new window)
# customFields
- Type
- craft\base\FieldInterface[]
- Default value
null
- Access
- Read-only
- Since
- 4.0.0
View source (opens new window)
# id
- Type
- integer (opens new window), null (opens new window)
- Default value
null
ID
View source (opens new window)
# reservedFieldHandles
- Type
- string (opens new window)[], null (opens new window)
- Default value
null
- Since
- 3.7.0
Reserved custom field handles
View source (opens new window)
# tabs
- Type
- craft\models\FieldLayoutTab[]
- Default value
null
The layout’s tabs.
View source (opens new window)
# type
- Type
- string (opens new window), null (opens new window)
- Default value
null
The element type
View source (opens new window)
# uid
- Type
- string (opens new window)
- Default value
null
UID
View source (opens new window)
# Public Methods
Method | Description |
---|---|
__call() (opens new window) | Calls the named method which is not a class method. |
__clone() | |
__construct() | |
__get() (opens new window) | Returns the value of a component property. |
__isset() (opens new window) | Checks if a property is set, i.e. defined and not null. |
__set() (opens new window) | Sets the value of a component property. |
__unset() (opens new window) | Sets a component property to be null. |
activeAttributes() (opens new window) | Returns the attribute names that are subject to validation in the current scenario. |
addError() (opens new window) | Adds a new error to the specified attribute. |
addErrors() (opens new window) | Adds a list of errors. |
addModelErrors() | Adds errors from another model, with a given attribute name prefix. |
afterValidate() (opens new window) | This method is invoked after validation ends. |
attachBehavior() (opens new window) | Attaches a behavior to this component. |
attachBehaviors() (opens new window) | Attaches a list of behaviors to the component. |
attributeHints() (opens new window) | Returns the attribute hints. |
attributeLabels() (opens new window) | Returns the attribute labels. |
attributes() (opens new window) | Returns the list of attribute names. |
beforeValidate() (opens new window) | This method is invoked before validation starts. |
behaviors() | Returns a list of behaviors that this component should behave as. |
canGetProperty() (opens new window) | Returns a value indicating whether a property can be read. |
canSetProperty() (opens new window) | Returns a value indicating whether a property can be set. |
className() (opens new window) | Returns the fully qualified name of this class. |
clearErrors() (opens new window) | 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() (opens new window) | Creates validator objects based on the validation rules specified in rules() (opens new window). |
datetimeAttributes() | Returns the names of any attributes that should hold DateTime (opens new window) values. |
detachBehavior() (opens new window) | Detaches a behavior from the component. |
detachBehaviors() (opens new window) | Detaches all behaviors from the component. |
ensureBehaviors() (opens new window) | Makes sure that the behaviors declared in behaviors() (opens new window) are attached to this component. |
extraFields() (opens new window) | Returns the list of fields that can be expanded further and returned by toArray() (opens new window). |
fields() (opens new window) | Returns the list of fields that should be returned by default by toArray() (opens new window) when no specific fields are specified. |
formName() (opens new window) | Returns the form name that this model class should use. |
generateAttributeLabel() (opens new window) | Generates a user friendly attribute label based on the give attribute name. |
getActiveValidators() (opens new window) | Returns the validators applicable to the current scenario (opens new window). |
getAttributeHint() (opens new window) | Returns the text hint for the specified attribute. |
getAttributeLabel() (opens new window) | Returns the text label for the specified attribute. |
getAttributes() (opens new window) | 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() (opens new window) | Returns the named behavior object. |
getBehaviors() (opens new window) | Returns all behaviors attached to this component. |
getConfig() | Returns the field layout’s config. |
getCustomFieldElements() | Returns the layout elements representing custom fields. |
getCustomFields() | Returns the custom fields included in the layout. |
getElementsByType() | Returns the layout elements of a given type. |
getErrorSummary() (opens new window) | Returns the errors for all attributes as a one-dimensional array. |
getErrors() (opens new window) | Returns the errors for all attributes or a single attribute. |
getField() | Returns a field that’s included in the layout by its attribute. |
getFieldByHandle() | Returns a custom field by its handle. |
getFirstElementByType() | Returns the first layout element of a given type. |
getFirstError() (opens new window) | Returns the first error of the specified attribute. |
getFirstErrors() (opens new window) | 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. |
getIterator() (opens new window) | Returns an iterator for traversing the attributes in the model. |
getScenario() (opens new window) | Returns the scenario that this model is used in. |
getTabs() | Returns the layout’s tabs. |
getValidators() (opens new window) | Returns all the validators declared in rules() (opens new window). |
getVisibleCustomFieldElements() | Returns the visible layout elements representing custom fields, taking conditions into account. |
getVisibleCustomFields() | Returns the visible custom fields included in the layout, taking 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() (opens new window) | Returns a value indicating whether there is any handler attached to the named event. |
hasMethod() (opens new window) | Returns a value indicating whether a method is defined. |
hasProperty() (opens new window) | Returns a value indicating whether a property is defined for this component. |
init() | Initializes the object. |
instance() (opens new window) | Returns static class instance, which can be used to obtain meta information. |
isAttributeActive() (opens new window) | Returns a value indicating whether the attribute is active in the current scenario. |
isAttributeRequired() (opens new window) | Returns a value indicating whether the attribute is required. |
isAttributeSafe() (opens new window) | Returns a value indicating whether the attribute is safe for massive assignments. |
isFieldIncluded() | Returns whether a field is included in the layout by its attribute. |
load() (opens new window) | Populates the model with input data. |
loadMultiple() (opens new window) | Populates a set of models with the data from end user. |
off() (opens new window) | Detaches an existing event handler from this component. |
offsetExists() (opens new window) | Returns whether there is an element at the specified offset. |
offsetGet() (opens new window) | Returns the element at the specified offset. |
offsetSet() (opens new window) | Sets the element at the specified offset. |
offsetUnset() (opens new window) | Sets the element value at the specified offset to null. |
on() (opens new window) | Attaches an event handler to an event. |
onUnsafeAttribute() (opens new window) | This method is invoked when an unsafe attribute is being massively assigned. |
rules() | Returns the validation rules for attributes. |
safeAttributes() (opens new window) | Returns the attribute names that are safe to be massively assigned in the current scenario. |
scenarios() (opens new window) | Returns a list of scenarios and the corresponding active attributes. |
setAttributes() | Sets the attribute values in a massive way. |
setScenario() (opens new window) | Sets the scenario for the model. |
setTabs() | Sets the layout’s tabs. |
toArray() (opens new window) | Converts the model into an array. |
trigger() (opens new window) | Triggers an event. |
validate() (opens new window) | Performs the data validation. |
validateFields() | Validates the field selections. |
validateMultiple() (opens new window) | 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’id
attributesnamespace
– 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()
View source (opens new window)
Arguments
$element
(craft\base\ElementInterface, null (opens new window)) – The element the form is being rendered for$static
(boolean (opens new window)) – Whether the form should be static (non-interactive)$config
(array (opens new window)) – The craft\models\FieldLayoutForm config
Returns
# createFromConfig()
- Since
- 3.1.0
Creates a new field layout from the given config.
View source (opens new window)
Arguments
$config
(array (opens new window))
Returns
self
# getAvailableCustomFields()
- Since
- 3.5.0
Returns the available fields, grouped by field group name.
View source (opens new window)
Returns
\craft\fieldlayoutelements\BaseField[][]
# getAvailableNativeFields()
- Since
- 3.5.0
Returns the available native fields.
View source (opens new window)
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.
View source (opens new window)
Returns
craft\base\FieldLayoutElement[]
# getConfig()
- Since
- 3.1.0
Returns the field layout’s config.
View source (opens new window)
Returns
array (opens new window), null (opens new window)
# getCustomFieldElements()
- Since
- 3.7.27
Returns the layout elements representing custom fields.
View source (opens new window)
Returns
craft\fieldlayoutelements\CustomField[]
# getCustomFields()
- Since
- 4.0.0
Returns the custom fields included in the layout.
View source (opens new window)
Returns
# getElementsByType()
- Since
- 4.0.0
Returns the layout elements of a given type.
View source (opens new window)
Arguments
$class
(string (opens new window))
Returns
\craft\models\T[]
# getField()
- Since
- 3.5.0
Returns a field that’s included in the layout by its attribute.
View source (opens new window)
Arguments
$attribute
(string (opens new window))
Returns
craft\fieldlayoutelements\BaseField
Throws
- yii\base\InvalidArgumentException (opens new window)
if the field isn’t included
# getFieldByHandle()
Returns a custom field by its handle.
View source (opens new window)
Arguments
$handle
(string (opens new window)) – The field handle.
Returns
craft\base\FieldInterface, null (opens new window)
# getFirstElementByType()
- Since
- 4.0.0
Returns the first layout element of a given type.
View source (opens new window)
Arguments
$class
(string (opens new window))
Returns
\craft\models\T
, null (opens new window) – 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.
View source (opens new window)
Arguments
$class
(string (opens new window))$element
(craft\base\ElementInterface)
Returns
\craft\models\T
, null (opens new window) – The layout element, or null
if none were found
# getTabs()
Returns the layout’s tabs.
View source (opens new window)
Returns
craft\models\FieldLayoutTab[] – The layout’s tabs.
# getVisibleCustomFieldElements()
- Since
- 4.1.4
Returns the visible layout elements representing custom fields, taking conditions into account.
View source (opens new window)
Arguments
$element
(craft\base\ElementInterface)
Returns
craft\fieldlayoutelements\CustomField[]
# getVisibleCustomFields()
- Since
- 4.0.0
Returns the visible custom fields included in the layout, taking conditions into account.
View source (opens new window)
Arguments
$element
(craft\base\ElementInterface)
Returns
# getVisibleElementsByType()
- Since
- 4.0.0
Returns the visible layout elements of a given type, taking conditions into account.
View source (opens new window)
Arguments
$class
(string (opens new window))$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.
View source (opens new window)
# isFieldIncluded()
- Since
- 3.5.0
Returns whether a field is included in the layout by its attribute.
View source (opens new window)
Arguments
$attribute
(string (opens new window))
Returns
# setTabs()
Sets the layout’s tabs.
View source (opens new window)
Arguments
$tabs
(array (opens new window)) – 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.
View source (opens new window)
# Protected Methods
Method | Description |
---|---|
defineBehaviors() | Returns the behaviors to attach to this class. |
defineRules() | Returns the validation rules for attributes. |
extractFieldsFor() (opens new window) | 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() (opens new window) | Extracts the root field names from nested fields. |
resolveFields() (opens new window) | Determines which fields can be returned by toArray() (opens new window). |
# 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.
View source (opens new window)
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()