3.1 配置表单和管理

龸龶龴龳龲龰龬龨龧龲龣龲龰龬龡龠(CM)龲龕

Drupal 8 龁 Drupal 7 齺齶龰龬齴齳龣齲齱齭齬齩齦齣齢齞齚齖齶齒齎龡龠龕

本课内容

  • 齍齋 CM齉龰龬龡龠齈龕
  • 齇齄 examples/configform_example 鼧鼦龕
  • 齍齋龰龬龨龧龕
  • 鼣鼢鼠鼜龰龬龨龧龕
  • 鼛鼜 *.settings.yml 鼋龴龳鼉齣 CM 鼆鼧鼦鼄鼀龰龬龕

配置管理

Drupal 8 龰龬龡龠齉CM齈 龰龬 API 黱黭鼋鼆鼧鼦鼄鼀龰龬齱黩黦黥黣齢齞黠黝黜龬龕黚黙黖黔黓黐黎黍黊黆黃黁麾麽齱黩麻麺麶麵麱麯麮麪麦麣麢黁麡麞麜麛齶龰龬龕黚麚麘麔 Drupal 8 黠黝麒黣 Drupal 7 Features 鼧鼦齶麌麋龕

Drupal 8 鼆麇麃麀齄鹼鹹齉鹶鹲鹰鹭麮鹫鹪龣鹨鹥齈齶龰龬鹢黓黦黥黣鹠鹞麮鹛鹘齶齣鹖鹓鹒龕黚麣鹐黙黖鹫鹰龰龬麇麃齶鹼鹹龕

鼉齣 Configuration inspector 鼧鼦鼋鹏黙黖鹋 Drupal 龡龠鹓鹒鹈鹅鹂鹀鸾齞龰龬鼋鸼鸸鸶鹋鸲鸯齒齎鸭鹂鹀 YAML 鸲鸯龕

鼧鼦鹰鹭麺黙黖黦鸥 {module}/config/install 鸙鸕鸭齶 YAML 鸲鸯鼋麱麯龰龬鸔麱齶鼠鸓鼋鼉齣鸏龸鸎鸋鸇鸯鸅鸂齞鹼鹹鸀鷿鹭鷾龕

鷽麒齢齞鷺鷶龰龬齶鷵鷳鸲齒齎鼋鼉鷯麱麯鸂鷬鷪黍黊鷨鷺鷧鷤鼋黚齞黙黖鷢鷟 schema 鸲鸯鷘鷖龕

被 CM 替代的 Drupal 7 函数

CM 鷓鷑黣 Drupal 鷎鹪鼉齣齶鷍齞齲齱龕黠黝鷌鷈鷇黚鷆齲齱鷅鷂鷁鶾 CM 齒齎鼋齎齢鶺龠龰龬齱黩龕

配置表单

鶙鶘鼛鼜 PageExampleForm 鶓鶒鶏黣 FormBase 鼋FormBase 鷇 FormInterface 齉黦黥黣齢齞龨龧齶鹅鶉齈 齶齢齞黔龧鷘鷖龕

Drupal 8 黦黥黣鶈齢齞黠黝黐 ConfigFormBase 鼋黚齞黐齶鶅鶄鶂鶺鷇鶁鵾黣鵺龰龬齒齎齶鸥鵷龕

使用 ConfigFormBase 创建模块

鷖鹋鶙鶘拷鵲鵮鵭齶 page_example,创建一个新模块 configform_example

鶙鶘鵪鼉 PageExampleForm 黐麋鵩鼄鼀齣鹖黦黥齶 email 龕鼆黣鷘鷖黚齞鹏鵥鸶鹋 ConfigFormExampleConfigForm.php 鵤齉黜鵡 configform_example/src/Form/齈龁 FormBase 鷓鵝鸓 ConfigFormBase

use Drupal\Core\Form\ConfigFormBase;
 
class ConfigFormExampleConfigForm extends ConfigFormBase {

黚齞黐鵜鶄齢齞鵚鵖齶鵓鵐 getEditableConfigNames齉ConfigFormBase 齶鵎麛鵓鵐齈鼋鶙鶘鷖鹋鼛鼜龕

/**
* {@inheritdoc}.
*/
public function getEditableConfigNames() {
  return ['configform_example.settings'];
}

使用 YAML 配置

Drupal 8 齺鼉齣龰龬 API 黙黖龁鹶鹲鹢鵌麻鼧鼦黦黥齶龰龬齴齳鼄鼀鹋 YAML 鸲鸯鸭龕鵉鼧鼦鷅鵆鵅鶓鼋YAML 鸭齶齴齳鵄齖鵃鷅鹛鹞齱黩鵀鼋鹛鹞齶鸙齶鷇鼆黣鶁鵾鴽麋龕

齢鴹齱黩鵀鷅鶁鹢鹏黙黖鴷鷧鷤齶鹛鹘鼆 YAML 鸲鸯鼋鴳鵬鴱鴰龕

鵉鼆鼧鼦黦黥龰龬鶓鼋黙黖鷢鷟齢齞鴯麱齶 YAML 鸲鸯鼆龰龬鸔麱鴭鴬鴪齉YAML 鸲鸯鴩龬鹋 config/install 鸙鸕鸭齈龕

鶙鶘鼉齣黖鷳鷑鴦鼆 email 鴣鴢鸔龬鴭鴬鴪龕

configform_example.settings.yml 鴠

email_address: form@examples.com

嵌套字段

鹲鴛鵥鶄鼋鹏黙黖鼉齣鴗鴖麶麵鸔麱麡麞鷆齶龰龬龕

address:
  line_1: 123 fake st
  city: Boston
  state: MA
  zip: 55555

黚鴊鴈鴇齱齇齶鴗鴖鴆鼠鴄麒 YAML 鴂黐黎龕鸂齱鴁鳿鷳鼉齣黊齉.齈鳽鳼黚齞鴗鴖鴪龕

鹶鹲龸鹶齺鵄鼉齣 address.line_1 鳽鳼 line_1 齶鴪龕

注意: 模块只有被安装时才会被导入到数据库,所以如果模块已经被安装了你必须卸载重新安装。

表单方法

鷖鹋 buildForm() 鵓鵐鳸鳵麛黚麣鼋鷑鴦鳳鳱鳰鸭鷧鳯鴠

龣 FormBase 麇麃鼋 ConfigFormBase 鷘鷖黣 buildForm 鵓鵐鼋鳬龨龧齱齇鸭鳪鷺黣齢齞黦鸥鳨鳦龕

鴄黖鹋鶙鶘鳪鷺鵬鳣鳢鵮鵭黙黖鼉齣鳞黐鷘鷖齶鸭鷧龕

public function buildForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildForm($form, $form_state);
  $config = $this->config('configform_example.settings');
  $form['email'] = [
    '#type' => 'email',
    '#title' => $this->t('Your .com email address.'),
    '#default_value' => $config->get('email_address')
  ];
  return $form;
}

评论 (写第一个评论)