Рейтинг:0

Плагин пользовательского блока не отображается в параметрах Layout Builder

флаг in

Новинка в Layout Builder — мы создали плагин для пользовательских блоков, который отображает пользовательскую форму. Когда я перехожу на страницу с Layout Builder и пытаюсь добавить этот блок... его нет в списке блоков.

/**
 * Обеспечивает форму блока.
 *
 * @Блокировать(
 * id = "мой_блок",
 * admin_label = @Translation("Мой блок с формой"),
 * категория = @Translation("Пользовательский")
 * )
 */
класс MyBlock расширяет BlockBase, реализует ContainerFactoryPluginInterface {

  /**
   * Конструктор форм.
   *
   * @var\Drupal\Core\Form\FormBuilderInterface
   */
  защищенный $formBuilder;

  /**
   * Создает новый экземпляр MyBlock.
   *
   * @param массив $configuration
   * Конфигурация плагина, т.е. массив со значениями конфигурации с ключами
   * по названию опции конфигурации. Специальный ключ «контекст» может использоваться для
   * инициализировать определенные контексты, установив его в массив контекста
   * значения, заданные контекстными именами.
   * @param строка $plugin_id
   * plugin_id для экземпляра плагина.
   * @param смешанный $plugin_definition
   * Определение реализации плагина.
   * @param \Drupal\Core\Form\FormBuilderInterface $form_builder
   * Конструктор форм.
   */
  публичная функция __construct(массив $configuration, $plugin_id, $plugin_definition, FormBuilderInterface $form_builder) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->formBuilder = $form_builder;
  }

  /**
   * {@inheritdoc}
   */
  общедоступная статическая функция create(ContainerInterface $container, массив $configuration, $plugin_id, $plugin_definition) {
    вернуть новую статику(
      $ конфигурация,
      $plugin_id,
      $plugin_definition,
      $контейнер->получить('form_builder')
    );
  }

  /**
   * {@inheritdoc}
   */
  общедоступная функция сборки () {
    $build['access_form'] = $this->formBuilder->getForm('Drupal\mymodule\Form\MyForm');
    вернуть $сборку;
  }

}

Есть ли что-то, что мне нужно добавить в аннотацию или класс, чтобы сделать его доступным для Layout Builder? Он отлично работает как обычный блок Drupal.

edit: я заметил, что в одном случайном пользовательском модуле им нужно изменить Layout Builder, чтобы получить эту функциональность. Это верно??

https://git.drupalcode.org/project/layout_builder_block/-/blob/1.x/src/EventSubscriber/LayoutBuilderBlockAddControllerSubscriber.php

Рейтинг:1
флаг in

Этот проект имеет Браузер компоновщика макетов установлен. После добавления этого блока в категорию он теперь доступен в Layout Builder. Ядро Drupal, кажется, только иначе распознает блоки block_content.

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

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