Рейтинг:3

QuickEditIntegration не может обрабатывать компоненты для быстрого редактирования

флаг cn

У меня есть тип контента, который отображается с помощью Layout Builder.Когда я просматриваю его в режиме по умолчанию, параметр «Быстрое редактирование» не отображается в контекстном меню. Это потому, что ни одно из полей не имеет data-quickedit-field-id атрибут.

Я провел пару дней в погоне за этим. По-видимому, проблема возникает в этой функции в ядро/модули/layout_builder/src/QuickEditIntegration.php.

  частная функция supportQuickEditOnComponent (массив $component, FieldableEntityInterface $entity) {
    if (isset($component['content']['#field_name'], $component['#base_plugin_id']) && $component['#base_plugin_id'] === 'field_block' && $entity->hasField($ компонент['content']['#field_name'])) {
      return $entity->getFieldDefinition($component['content']['#field_name'])->isDisplayConfigurable('view');
    }
    вернуть ЛОЖЬ;
  }

Когда сущностьViewAlter звонки поддержкаQuickEditOnComponent, массив $component содержит неожиданный вложенный массив...

снимок структуры JSON

и все, что должно быть внутри содержание вместо этого вложен в подмассив [0]. В результате функция возвращает ЛОЖЬ и ни одно из полей не добавляется в $plugin_ids_to_update и поэтому они не анализируются внутри этого цикла в сущностьViewAlter:

  foreach ($plugin_ids_to_update as $delta => $regions) {
    foreach ($regions as $region => $uuids) {
      foreach ($uuids as $uuid => $component) {
        $build['_layout_builder'][$delta][$region][$uuid]['content']['#view_mode'] = static::getViewModeId($entity, $display, $delta, $uuid, $sections_hash );
      }
    }
  }

... где назначается идентификатор режима просмотра, который позволяет data-quickedit-field-id атрибут, который будет добавлен с помощью быстрого редактирования позже.

Я "исправил" это путем взлома QuickEditIntegration.php в двух местах, сворачивая подмассив [0] в основной $компонент множество. Я знаю, что это неправильный способ сделать это. Что может быть причиной того, что эти компоненты Layout Builder помещаются в подмассив вместо того, где QuickEditIntegration ожидает их найти?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.