logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
04/10/2025, by Ivan

在 HelloBlock 类中添加以下方法。在本例中,它位于文件 src/Plugin/Block/HelloBlock.php 中。但随着你逐渐以更面向对象 (OOP) 的方式思考,它在文件结构中的物理位置并不像命名空间那样重要。作为一个聪明的面向对象程序员,你会让这两者紧密对齐。不过请注意,命名空间通常与模块文件夹名以及我们之前讨论过的模块机器名非常相似,这一点稍后当你需要以编程方式与模块代码交互时会很重要。

  /**
   * {@inheritdoc}
   */
  public function blockSubmit($form, FormStateInterface $form_state) {
    $this->configuration['hello_block_name'] = $form_state->getValue('hello_block_name');
  }

如果你在表单元素外面包裹了一个 fieldset,那么在调用 getValue() 时需要传递一个数组,而不是仅仅传递字段名。这里 myfieldset 是包裹了 hello_block_name 字段的字段集。

$this->configuration['hello_block_name'] = $form_state->getValue(['myfieldset', 'hello_block_name']);

添加这段代码意味着表单将被处理,并且表单输入会保存到该区块实例的配置中,而不会影响其他区块实例。然而,该区块仍然没有使用这些配置更改的结果。这将在本教程的下一部分中介绍。