I have a custom module that creates a custom block with field elements.
This all works great, but I need to split this block. I checked other posts here and tried with no luck.
I turned on twig debugging and got suggestions on the topic. Not lucky yet.
Can someone point me in the right direction.
This is what I have so far:
my_module / my_module.module
// nothing related in here
my_module / src / plugin / block / myModuleBlock.php
<?php namespace Drupal\my_module\Plugin\Block; use Drupal\Core\Block\BlockBase; use Drupal\Core\Form\FormStateInterface; class ModuleBlock extends BlockBase { public function blockForm($form, FormStateInterface $form_state) { $form['test'] = array( '#type' => 'select', '#title' => $this->t('test'), '#description' => $this->t('test list'), '#options' => array( 'Test' => $this->t('Test'), ), '#default_value' => isset($this->configuration['test']) ? $this->configuration['test'] : 'Test', '#size' => 0, '#weight' => '10', '#required' => TRUE, ); return $form; } public function blockSubmit($form, FormStateInterface $form_state) { $this->configuration['test'] = $form_state->getValue('test'); } public function build() { $build = []; $build['module_block_test']['#markup'] = '<p>' . $this->configuration['test'] . '</p>'; return $build; } }
my_module / templates / block - my-module.html.twig // as suggested by twig debugging
<h1>This is a test</h1> <div id="test-widget">{{ content }}</div>
I should also note that in my my_theme.theme I have this, but I don't think it matters:
// Add content type suggestions. function my_theme_theme_suggestions_page_alter(array &$suggestions, array $variables) { if ($node = \Drupal::request()->attributes->get('node')) { array_splice($suggestions, 1, 0, 'page__node__' . $node->getType()); } }
What I tried:
public function build() { return array( '#theme' => 'block--my-module' ); }
But still no.
Any help here is much appreciated.
UPDATE: I just got it to work, but I still need help. I moved the block--my-module.html.twig template block--my-module.html.twig to my themes directory and it worked.
How do I make it work in my modules directory?