class LayoutBuilderEntityViewDisplayForm
Same name in other branches
- 9 core/modules/layout_builder/src/Form/LayoutBuilderEntityViewDisplayForm.php \Drupal\layout_builder\Form\LayoutBuilderEntityViewDisplayForm
- 8.9.x core/modules/layout_builder/src/Form/LayoutBuilderEntityViewDisplayForm.php \Drupal\layout_builder\Form\LayoutBuilderEntityViewDisplayForm
- 10 core/modules/layout_builder/src/Form/LayoutBuilderEntityViewDisplayForm.php \Drupal\layout_builder\Form\LayoutBuilderEntityViewDisplayForm
Edit form for the LayoutBuilderEntityViewDisplay entity type.
@internal Form classes are internal.
Hierarchy
- class \Drupal\Core\Form\FormBase implements \Drupal\Core\Form\FormInterface, \Drupal\Core\DependencyInjection\ContainerInjectionInterface uses \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Logger\LoggerChannelTrait, \Drupal\Core\Messenger\MessengerTrait, \Drupal\Core\Routing\RedirectDestinationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait
- class \Drupal\Core\Entity\EntityForm extends \Drupal\Core\Form\FormBase implements \Drupal\Core\Entity\EntityFormInterface
- class \Drupal\field_ui\Form\EntityDisplayFormBase extends \Drupal\Core\Entity\EntityForm
- class \Drupal\field_ui\Form\EntityViewDisplayEditForm extends \Drupal\field_ui\Form\EntityDisplayFormBase uses \Drupal\field\FieldLabelOptionsTrait
- class \Drupal\layout_builder\Form\LayoutBuilderEntityViewDisplayForm extends \Drupal\field_ui\Form\EntityViewDisplayEditForm
- class \Drupal\field_ui\Form\EntityViewDisplayEditForm extends \Drupal\field_ui\Form\EntityDisplayFormBase uses \Drupal\field\FieldLabelOptionsTrait
- class \Drupal\field_ui\Form\EntityDisplayFormBase extends \Drupal\Core\Entity\EntityForm
- class \Drupal\Core\Entity\EntityForm extends \Drupal\Core\Form\FormBase implements \Drupal\Core\Entity\EntityFormInterface
Expanded class hierarchy of LayoutBuilderEntityViewDisplayForm
1 file declares its use of LayoutBuilderEntityViewDisplayForm
- layout_builder.module in core/
modules/ layout_builder/ layout_builder.module - Provides hook implementations for Layout Builder.
File
-
core/
modules/ layout_builder/ src/ Form/ LayoutBuilderEntityViewDisplayForm.php, line 19
Namespace
Drupal\layout_builder\FormView source
class LayoutBuilderEntityViewDisplayForm extends EntityViewDisplayEditForm {
/**
* The entity being used by this form.
*
* @var \Drupal\layout_builder\Entity\LayoutEntityDisplayInterface
*/
protected $entity;
/**
* The storage section.
*
* @var \Drupal\layout_builder\DefaultsSectionStorageInterface
*/
protected $sectionStorage;
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state, ?SectionStorageInterface $section_storage = NULL) {
$this->sectionStorage = $section_storage;
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function form(array $form, FormStateInterface $form_state) {
$form = parent::form($form, $form_state);
// Remove the Layout Builder field from the list.
$form['#fields'] = array_diff($form['#fields'], [
OverridesSectionStorage::FIELD_NAME,
]);
unset($form['fields'][OverridesSectionStorage::FIELD_NAME]);
$is_enabled = $this->entity
->isLayoutBuilderEnabled();
if ($is_enabled) {
// Hide the table of fields.
$form['fields']['#access'] = FALSE;
$form['#fields'] = [];
$form['#extra'] = [];
}
$form['manage_layout'] = [
'#type' => 'link',
'#title' => $this->t('Manage layout'),
'#weight' => -10,
'#attributes' => [
'class' => [
'button',
],
],
'#url' => $this->sectionStorage
->getLayoutBuilderUrl(),
'#access' => $is_enabled,
];
$form['layout'] = [
'#type' => 'details',
'#open' => TRUE,
'#title' => $this->t('Layout options'),
'#tree' => TRUE,
];
$form['layout']['enabled'] = [
'#type' => 'checkbox',
'#title' => $this->t('Use Layout Builder'),
'#default_value' => $is_enabled,
];
$form['#entity_builders']['layout_builder'] = '::entityFormEntityBuild';
// @todo Expand to work for all view modes in
// https://www.drupal.org/node/2907413.
if ($this->isCanonicalMode($this->entity
->getMode())) {
$entity_type = $this->entityTypeManager
->getDefinition($this->entity
->getTargetEntityTypeId());
$form['layout']['allow_custom'] = [
'#type' => 'checkbox',
'#title' => $this->t('Allow each @entity to have its layout customized.', [
'@entity' => $entity_type->getSingularLabel(),
]),
'#default_value' => $this->entity
->isOverridable(),
'#states' => [
'disabled' => [
':input[name="layout[enabled]"]' => [
'checked' => FALSE,
],
],
'invisible' => [
':input[name="layout[enabled]"]' => [
'checked' => FALSE,
],
],
],
];
if (!$is_enabled) {
$form['layout']['allow_custom']['#attributes']['disabled'] = 'disabled';
}
// Prevent turning off overrides while any exist.
if ($this->hasOverrides($this->entity)) {
$form['layout']['enabled']['#disabled'] = TRUE;
$form['layout']['enabled']['#description'] = $this->t('You must revert all customized layouts of this display before you can disable this option.');
$form['layout']['allow_custom']['#disabled'] = TRUE;
$form['layout']['allow_custom']['#description'] = $this->t('You must revert all customized layouts of this display before you can disable this option.');
unset($form['layout']['allow_custom']['#states']);
unset($form['#entity_builders']['layout_builder']);
}
}
else {
$form['layout']['allow_custom'] = [
'#type' => 'value',
'#value' => $this->entity
->isOverridable(),
];
}
return $form;
}
/**
* Determines if the mode is used by the canonical route.
*
* @param string $mode
* The view mode.
*
* @return bool
* TRUE if the mode is valid, FALSE otherwise.
*/
protected function isCanonicalMode($mode) {
// @todo This is a convention core uses but is not a given, nor is it easily
// introspectable. Address in https://www.drupal.org/node/2907413.
$canonical_mode = 'full';
if ($mode === $canonical_mode) {
return TRUE;
}
// The default mode is valid if the canonical mode is not enabled.
if ($mode === 'default') {
/** @var \Drupal\Core\Config\Entity\ConfigEntityStorageInterface $storage */
$storage = $this->entityTypeManager
->getStorage($this->entity
->getEntityTypeId());
$query = $storage->getQuery()
->condition('targetEntityType', $this->entity
->getTargetEntityTypeId())
->condition('bundle', $this->entity
->getTargetBundle())
->condition('status', TRUE)
->condition('mode', $canonical_mode);
return !$query->count()
->execute();
}
return FALSE;
}
/**
* Determines if the defaults have any overrides.
*
* @param \Drupal\layout_builder\Entity\LayoutEntityDisplayInterface $display
* The entity display.
*
* @return bool
* TRUE if there are any overrides of this default, FALSE otherwise.
*/
protected function hasOverrides(LayoutEntityDisplayInterface $display) {
if (!$display->isOverridable()) {
return FALSE;
}
$entity_type = $this->entityTypeManager
->getDefinition($display->getTargetEntityTypeId());
$query = $this->entityTypeManager
->getStorage($display->getTargetEntityTypeId())
->getQuery()
->accessCheck(FALSE)
->exists(OverridesSectionStorage::FIELD_NAME);
if ($bundle_key = $entity_type->getKey('bundle')) {
$query->condition($bundle_key, $display->getTargetBundle());
}
return (bool) $query->count()
->execute();
}
/**
* {@inheritdoc}
*/
protected function copyFormValuesToEntity(EntityInterface $entity, array $form, FormStateInterface $form_state) {
// Do not process field values if Layout Builder is or will be enabled.
$set_enabled = (bool) $form_state->getValue([
'layout',
'enabled',
], FALSE);
/** @var \Drupal\layout_builder\Entity\LayoutEntityDisplayInterface $entity */
$already_enabled = $entity->isLayoutBuilderEnabled();
if ($already_enabled || $set_enabled) {
$form['#fields'] = [];
$form['#extra'] = [];
}
parent::copyFormValuesToEntity($entity, $form, $form_state);
}
/**
* Entity builder for layout options on the entity view display form.
*/
public function entityFormEntityBuild($entity_type_id, LayoutEntityDisplayInterface $display, &$form, FormStateInterface &$form_state) {
$set_enabled = (bool) $form_state->getValue([
'layout',
'enabled',
], FALSE);
$already_enabled = $display->isLayoutBuilderEnabled();
if ($set_enabled) {
$overridable = (bool) $form_state->getValue([
'layout',
'allow_custom',
], FALSE);
$display->setOverridable($overridable);
if (!$already_enabled) {
$display->enableLayoutBuilder();
}
}
elseif ($already_enabled) {
$form_state->setRedirectUrl($this->sectionStorage
->getLayoutBuilderUrl('disable'));
}
}
/**
* {@inheritdoc}
*/
protected function buildFieldRow(FieldDefinitionInterface $field_definition, array $form, FormStateInterface $form_state) {
if ($this->entity
->isLayoutBuilderEnabled()) {
return [];
}
return parent::buildFieldRow($field_definition, $form, $form_state);
}
/**
* {@inheritdoc}
*/
protected function buildExtraFieldRow($field_id, $extra_field) {
if ($this->entity
->isLayoutBuilderEnabled()) {
return [];
}
return parent::buildExtraFieldRow($field_id, $extra_field);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DependencySerializationTrait::$_entityStorages | protected | property | |||
DependencySerializationTrait::$_serviceIds | protected | property | |||
DependencySerializationTrait::__sleep | public | function | 1 | ||
DependencySerializationTrait::__wakeup | public | function | 2 | ||
EntityDisplayFormBase::$entityDisplayRepository | protected | property | The entity display repository. | ||
EntityDisplayFormBase::$entityFieldManager | protected | property | The entity field manager. | ||
EntityDisplayFormBase::$fieldTypes | protected | property | A list of field types. | ||
EntityDisplayFormBase::$pluginManager | protected | property | The widget or formatter plugin manager. | ||
EntityDisplayFormBase::getApplicablePluginOptions | protected | function | Returns an array of applicable widget or formatter options for a field. | ||
EntityDisplayFormBase::getDisplays | protected | function | Returns entity (form) displays for the current entity display type. | ||
EntityDisplayFormBase::getDisplayStatuses | protected | function | Returns form or view modes statuses for the bundle used by this form. | ||
EntityDisplayFormBase::getEntityFromRouteMatch | public | function | Overrides EntityForm::getEntityFromRouteMatch | ||
EntityDisplayFormBase::getExtraFields | protected | function | Returns the extra fields of the entity type and bundle used by this form. | ||
EntityDisplayFormBase::getFieldDefinitions | protected | function | Collects the definitions of fields whose display is configurable. | ||
EntityDisplayFormBase::getRegionOptions | public | function | Returns an associative array of all regions. | ||
EntityDisplayFormBase::getRegions | public | function | Get the regions needed to create the overview form. | ||
EntityDisplayFormBase::getRowRegion | public | function | Returns the region to which a row in the display overview belongs. | ||
EntityDisplayFormBase::multistepAjax | public | function | Ajax handler for multistep buttons. | ||
EntityDisplayFormBase::multistepSubmit | public | function | Form submission handler for multistep buttons. | ||
EntityDisplayFormBase::saveDisplayStatuses | protected | function | Saves the updated display mode statuses. | ||
EntityDisplayFormBase::submitForm | public | function | Overrides EntityForm::submitForm | ||
EntityDisplayFormBase::__construct | public | function | Constructs a new EntityDisplayFormBase. | 2 | |
EntityForm::$entityTypeManager | protected | property | The entity type manager. | 3 | |
EntityForm::$moduleHandler | protected | property | The module handler service. | 2 | |
EntityForm::$operation | protected | property | The name of the current operation. | ||
EntityForm::actions | protected | function | Returns an array of supported actions for the current entity form. | 36 | |
EntityForm::actionsElement | protected | function | Returns the action form element for the current entity form. | ||
EntityForm::afterBuild | public | function | Form element #after_build callback: Updates the entity with submitted data. | 1 | |
EntityForm::buildEntity | public | function | Overrides EntityFormInterface::buildEntity | 5 | |
EntityForm::getBaseFormId | public | function | Overrides BaseFormIdInterface::getBaseFormId | 4 | |
EntityForm::getEntity | public | function | Overrides EntityFormInterface::getEntity | ||
EntityForm::getFormId | public | function | Overrides FormInterface::getFormId | 13 | |
EntityForm::getOperation | public | function | Overrides EntityFormInterface::getOperation | ||
EntityForm::init | protected | function | Initialize the form state and the entity before the first form build. | 3 | |
EntityForm::prepareEntity | protected | function | Prepares the entity object before the form is built first. | 3 | |
EntityForm::prepareInvokeAll | protected | function | Invokes the specified prepare hook variant. | ||
EntityForm::processForm | public | function | Process callback: assigns weights and hides extra fields. | ||
EntityForm::save | public | function | Overrides EntityFormInterface::save | 47 | |
EntityForm::setEntity | public | function | Overrides EntityFormInterface::setEntity | ||
EntityForm::setEntityTypeManager | public | function | Overrides EntityFormInterface::setEntityTypeManager | ||
EntityForm::setModuleHandler | public | function | Overrides EntityFormInterface::setModuleHandler | ||
EntityForm::setOperation | public | function | Overrides EntityFormInterface::setOperation | ||
EntityViewDisplayEditForm::$displayContext | protected | property | Overrides EntityDisplayFormBase::$displayContext | ||
EntityViewDisplayEditForm::alterSettingsSummary | protected | function | Overrides EntityDisplayFormBase::alterSettingsSummary | ||
EntityViewDisplayEditForm::create | public static | function | Overrides FormBase::create | 1 | |
EntityViewDisplayEditForm::getDefaultPlugin | protected | function | Overrides EntityDisplayFormBase::getDefaultPlugin | ||
EntityViewDisplayEditForm::getDisplayModeOptions | protected | function | Overrides EntityDisplayFormBase::getDisplayModeOptions | ||
EntityViewDisplayEditForm::getDisplayModes | protected | function | Overrides EntityDisplayFormBase::getDisplayModes | ||
EntityViewDisplayEditForm::getDisplayModesLink | protected | function | Overrides EntityDisplayFormBase::getDisplayModesLink | ||
EntityViewDisplayEditForm::getEntityDisplay | protected | function | Overrides EntityDisplayFormBase::getEntityDisplay | ||
EntityViewDisplayEditForm::getOverviewUrl | protected | function | Overrides EntityDisplayFormBase::getOverviewUrl | ||
EntityViewDisplayEditForm::getTableHeader | protected | function | Overrides EntityDisplayFormBase::getTableHeader | ||
EntityViewDisplayEditForm::thirdPartySettingsForm | protected | function | Overrides EntityDisplayFormBase::thirdPartySettingsForm | ||
FieldLabelOptionsTrait::getFieldLabelOptions | protected | function | Returns an array of visibility options for field labels. | ||
FormBase::$configFactory | protected | property | The config factory. | 2 | |
FormBase::$requestStack | protected | property | The request stack. | 1 | |
FormBase::$routeMatch | protected | property | The route match. | ||
FormBase::config | protected | function | Retrieves a configuration object. | ||
FormBase::configFactory | protected | function | Gets the config factory for this form. | 2 | |
FormBase::container | private | function | Returns the service container. | ||
FormBase::currentUser | protected | function | Gets the current user. | 2 | |
FormBase::getRequest | protected | function | Gets the request object. | ||
FormBase::getRouteMatch | protected | function | Gets the route match. | ||
FormBase::logger | protected | function | Gets the logger for a specific channel. | ||
FormBase::redirect | protected | function | Returns a redirect response object for the specified route. | ||
FormBase::resetConfigFactory | public | function | Resets the configuration factory. | ||
FormBase::setConfigFactory | public | function | Sets the config factory for this form. | ||
FormBase::setRequestStack | public | function | Sets the request stack object to use. | ||
FormBase::validateForm | public | function | Overrides FormInterface::validateForm | 57 | |
LayoutBuilderEntityViewDisplayForm::$entity | protected | property | The entity being used by this form. | Overrides EntityDisplayFormBase::$entity | |
LayoutBuilderEntityViewDisplayForm::$sectionStorage | protected | property | The storage section. | ||
LayoutBuilderEntityViewDisplayForm::buildExtraFieldRow | protected | function | Overrides EntityViewDisplayEditForm::buildExtraFieldRow | ||
LayoutBuilderEntityViewDisplayForm::buildFieldRow | protected | function | Overrides EntityViewDisplayEditForm::buildFieldRow | ||
LayoutBuilderEntityViewDisplayForm::buildForm | public | function | Overrides EntityForm::buildForm | ||
LayoutBuilderEntityViewDisplayForm::copyFormValuesToEntity | protected | function | Overrides EntityDisplayFormBase::copyFormValuesToEntity | ||
LayoutBuilderEntityViewDisplayForm::entityFormEntityBuild | public | function | Entity builder for layout options on the entity view display form. | ||
LayoutBuilderEntityViewDisplayForm::form | public | function | Overrides EntityDisplayFormBase::form | ||
LayoutBuilderEntityViewDisplayForm::hasOverrides | protected | function | Determines if the defaults have any overrides. | ||
LayoutBuilderEntityViewDisplayForm::isCanonicalMode | protected | function | Determines if the mode is used by the canonical route. | ||
LoggerChannelTrait::$loggerFactory | protected | property | The logger channel factory service. | ||
LoggerChannelTrait::getLogger | protected | function | Gets the logger for a specific channel. | ||
LoggerChannelTrait::setLoggerFactory | public | function | Injects the logger channel factory. | ||
MessengerTrait::$messenger | protected | property | The messenger. | 16 | |
MessengerTrait::messenger | public | function | Gets the messenger. | 16 | |
MessengerTrait::setMessenger | public | function | Sets the messenger. | ||
RedirectDestinationTrait::$redirectDestination | protected | property | The redirect destination service. | 2 | |
RedirectDestinationTrait::getDestinationArray | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | ||
RedirectDestinationTrait::getRedirectDestination | protected | function | Returns the redirect destination service. | ||
RedirectDestinationTrait::setRedirectDestination | public | function | Sets the redirect destination service. | ||
StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | |
StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | |
StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.