Nou în Layout Builder - am creat un plugin de bloc personalizat care redă un formular personalizat. Când merg la o pagină cu Layout Builder și încerc să adaug acel bloc... nu este în lista de blocuri.
/**
* Oferă un bloc de formulare.
*
* @Bloc(
* id = „blocul_meu”,
* admin_label = @Translation ("Blocul meu cu formular"),
* categorie = @Translation(„Personalizat”)
* )
*/
clasa MyBlock extinde BlockBase implementează ContainerFactoryPluginInterface {
/**
* Generatorul de formulare.
*
* @var \Drupal\Core\Form\FormBuilderInterface
*/
protejat $formBuilder;
/**
* Construiește o nouă instanță MyBlock.
*
* @param array $configurare
* Configurația pluginului, adică o matrice cu valori de configurare introduse
* după numele opțiunii de configurare. Tasta specială „context” poate fi folosită pentru
* inițializați contextele definite setându-le la o matrice de context
* valori tastate de nume de context.
* @param șir $plugin_id
* Plugin_id-ul pentru instanța de plugin.
* @param mixat $plugin_definition
* Definiția implementării pluginului.
* @param \Drupal\Core\Form\FormBuilderInterface $form_builder
* Generatorul de formulare.
*/
funcția publică __construct(matrice $configurație, $plugin_id, $plugin_definition, FormBuilderInterface $form_builder) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->formBuilder = $form_builder;
}
/**
* {@inheritdoc}
*/
funcția publică statică create(ContainerInterface $container, matrice $configurație, $plugin_id, $plugin_definition) {
returnează static nou (
$configurare,
$plugin_id,
$plugin_definition,
$container->get('form_builder')
);
}
/**
* {@inheritdoc}
*/
public function build() {
$build['access_form'] = $this->formBuilder->getForm('Drupal\mymodule\Form\MyForm');
returnează $build;
}
}
Trebuie să adaug ceva la adnotare sau la clasă pentru a face din aceasta o opțiune pentru Layout Builder? Funcționează bine ca un bloc Drupal normal.
edit: observ că într-un modul personalizat aleatoriu, trebuie să modifice Layout Builder pentru a obține această funcționalitate. Este corect??
https://git.drupalcode.org/project/layout_builder_block/-/blob/1.x/src/EventSubscriber/LayoutBuilderBlockAddControllerSubscriber.php