【问题标题】:Drupal 8 - Custom block is not rendering in controllerDrupal 8 - 自定义块不在控制器中呈现
【发布时间】:2017-03-10 22:08:14
【问题描述】:

我创建了一个自定义块,并尝试将其加载到控制器中,以最终在树枝模板中呈现。我知道块代码有效,因为我可以使用块 ui 将其放置在页面上,并且内容呈现完美。但是当我尝试将它加载到控制器中时,它返回 NULL。希望有人能看出问题所在。

这是我的块代码:

/**
 * Provides a 'homepage search' block.
 *
 * @Block(
 *   id = "home_search_block",
 *   admin_label = @Translation("Home Search block"),
 *   category = @Translation("Custom home search block example")
 * )
 */
class HomeSearchBlock extends BlockBase {
  /**
   * {@inheritdoc}
   */
  public function build() {
    $form = \Drupal::formBuilder()->getForm('Drupal\homepage\Form\HomeSearchForm');

    return $form;
  }
}

这是我的控制器代码:

class HomeController extends ControllerBase {

  public function content() {

    $config = $this->config('nl_admin.settings');
    $image_text = $config->get('nl_admin.homepage_image_text');

    $block = Block::load('home_search_block');

    $search_form = \Drupal::entityTypeManager()
      ->getViewBuilder('block')
      ->view($block);

    $build = array(
      '#theme' => 'homepage',
      '#image_text' => $image_text,
      '#search_form' => $search_form,
      '#cache' => array('max-age' => 0)
     );

    return $build;
  }

}

如果我在控制器中 kint($block),它返回 NULL。

【问题讨论】:

  • 你有没有找到解决这个问题的方法?我也有同样的问题...

标签: drupal-8


【解决方案1】:

自定义块的实体类型为“block_content”,而不是“block”。

您需要通过以下方式更改您的代码:

$block = BlockContent::load('home_search_block');

$search_form = \Drupal::entityTypeManager()
  ->getViewBuilder('block_content')
  ->view($block);

如果您想这样做,Drupal 文档中还有一个有用的创建自定义块的指南: https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-block

自定义块的自定义模板也很棘手,这篇文章中有一些提示: https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-block

这里有一个很好的讨论: https://www.drupal.org/forum/support/theme-development/2016-05-15/drupal-8-custom-block-twig-template-naming-not-working

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2015-08-03
    • 2015-06-12
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多