Drupal8模块开发-处理区块的配置表单

翻译者:长风Drupal开发

原文:https://www.drupal.org/docs/8/creating-custom-modules/process-the-block-config-form


在之前的基于Drupal8开发的模块中,添加如下的方法到htlloworld类中,在这个例子中,他的位置在src/Plugin/Block/HelloBlock.php,但是你开始面向对象的思维后,这个文件的物理位置并不重要,反而他的命名空间更重要。如果你是一个精通于面向对象的开发者,你可以很轻松的区分这两者,这实际的案例中,他和Drupal中模块的文件夹的命名非常相似,

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

如果你有一个字段组包裹你的表单元素,你需要传一个数组给getvalue()函数,而不是一个单个的字段值,例如

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

添加上面的代码到Drupal8区块中意味着表单将被操作,表单中的值将被单独为这个区块存储到配置中,与其他区块实例分开,这个区块仍然没有使用到配置的值,这将在下一张中继续将。