ใหม่สำหรับ Layout Builder - เราสร้างปลั๊กอินบล็อกแบบกำหนดเองที่แสดงฟอร์มแบบกำหนดเอง เมื่อฉันไปที่เพจที่มี Layout Builder และพยายามเพิ่มบล็อกนั้น... มันไม่อยู่ในรายการบล็อก
/**
* ให้บล็อกแบบฟอร์ม
*
* @ปิดกั้น(
* id = "my_block",
* 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) {
พาเรนต์::__construct($configuration, $plugin_id, $plugin_definition);
$this->formBuilder = $form_builder;
}
/**
* {@inheritdoc}
*/
การสร้างฟังก์ชันสแตติกสาธารณะ (ContainerInterface $container, อาร์เรย์ $configuration, $plugin_id, $plugin_definition) {
ส่งคืนค่าคงที่ใหม่ (
$configuration,
$plugin_id,
$plugin_definition,
$container->get('form_builder')
);
}
/**
* {@inheritdoc}
*/
สร้างฟังก์ชั่นสาธารณะ () {
$build['access_form'] = $this->formBuilder->getForm('Drupal\mymodule\Form\MyForm');
ส่งคืน $build;
}
}
มีบางอย่างที่ฉันต้องเพิ่มในคำอธิบายประกอบหรือคลาสเพื่อให้เป็นตัวเลือกสำหรับ Layout Builder หรือไม่ มันทำงานได้ดีเหมือนบล็อก Drupal ทั่วไป
แก้ไข: ฉันสังเกตเห็นในโมดูลที่กำหนดเองแบบสุ่ม พวกเขาต้องเปลี่ยน Layout Builder เพื่อรับฟังก์ชันนี้ ถูกต้องไหม??
https://git.drupalcode.org/project/layout_builder_block/-/blob/1.x/src/EventSubscriber/LayoutBuilderBlockAddControllerSubscriber.php