翻译者:长风Drupal开发
翻译地址:http://www.5188jxt.com/technology/drupal8mo-kuai-kai-fa-tian-jia-yi-ge-biao-dan-dao-qu-kuai-de-pei-zhi-zhong.htm 原文地址:https://www.drupal.org/docs/8/creating-custom-modules/add-a-form-to-the-block-configuration
接下来,我们想为Drupal8区块的实例添加一个可以输入配置信息的表单,所有在Drupal8站点中的配置信息都可以被导入或者导出到生产站点,作为一个Drupal8模块开发者,同样可以提供可以为Drupal建站者提供一个自动填写表单的配置信息。
在你已经存在的 HelloBlock 类,加入如下:
use Drupal\Core\Block\BlockPluginInterface; use Drupal\Core\Form\FormStateInterface;
更新这个类的声明
class HelloBlock extends BlockBase implements BlockPluginInterface {
下面的代码只是添加一个表单,表单的操作和结果保存将在下面一个章节中讲述。
/** * {@inheritdoc} */ public function blockForm($form, FormStateInterface $form_state) { $form = parent::blockForm($form, $form_state); $config = $this->getConfiguration(); $form['hello_block_name'] = array( '#type' => 'textfield', '#title' => $this->t('Who'), '#description' => $this->t('Who do you want to say helloto?'), '#default_value' => isset($config['hello_block_name']) ? $config['hello_block_name'] : '', ); return $form; }
在这个例子中,这个Drupal8的表单第一次被定义是通过引用它的父类,通过这段代码$form = parent::blockForm($form, $form_state );
接下来,我们想Drupal8的表单中添加新的字段,
最后,我们告诉Drupal存储这些值,下面是例子
/** * {@inheritdoc} */ public function blockSubmit($form, FormStateInterface $form_state) { parent::blockSubmit($form, $form_state); $values = $form_state->getValues(); $this->configuration['hello_block_name'] = $values['hello_block_name']; }
要查看我们定义的这个Drupal8表单,可以到admin->structure->Block 找到hello world区块。