Новинка в 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