Drupal 8自定义模块 - 如何在管理区域中创建一个字段,然后在我的模块中拉出该输入以供使用?

时间:2017-04-15 16:00:18

标签: drupal-modules drupal-8

Drupal 8的新手,我来自WP世界,所以很难搞清楚事情。我创建了一个自定义模块并有一个页面输出文本。我被困的地方是能够在管理区域中创建一个字段,拉出保存的信息,然后在我输出的内容中使用它。

一直跟着教程,但我很困难。任何人都可以为我提供路线图或有用的文章来实现这一目标吗?

1 个答案:

答案 0 :(得分:3)

假设您的模块名称为“自定义”,请按照以下步骤创建管理表单并在管理页面上提取已保存的信息。

创建文件夹名称“自定义”。

在“custom”文件夹中创建“ custom.info.yml ”文件。

name: custom
description: Show admin saved data through custom module.
type: module
# core: 8.x
configure: admin/config/services/custom

为谁访问管理员表单创建权限 对于Permission,在“custom”文件夹中创建“ custom.permissions.yml ”文件。

'administer custom':
  'title': 'Administer Customform'
  'description': 'Configure how Custom Form is used on the site.'
  restrict access: true

然后为自定义管理表单路径创建路由&这是内容。

在“custom”文件夹中创建“ custom.routing.yml ”文件。

custom.config:
  path: '/admin/config/custom/config'
  defaults:
    _form: '\Drupal\custom\Form\CustomConfigForm'
    _title: 'Custom Configuration'
  requirements:
    _permission: 'administer custom'

现在创建一个菜单并在菜单路径&中分配此路由(“custom.config”)。在自定义文件夹中创建表单,表单位置为 SRC /形式/ CustomConfigForm.php

对于菜单,在“custom”文件夹中创建“ custom.links.menu.yml ”文件。

custom.config:
  title: 'Custom '
  description: 'Custom Admin Configuration'
  parent: system.admin_config
  route_name: custom.config
  weight: 100

对于管理表单,在自定义文件夹中创建 CustomConfigForm.php 文件,文件位置为 src / Form / CustomConfigForm.php

<?php

namespace Drupal\custom\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

class CustomConfigForm extends ConfigFormBase {

    public function getFormId() {
        return 'custom_config_form';
    }


    public function buildForm(array $form, FormStateInterface $form_state) {

    $config = $this->config('custom.settings');  // store data in custom.settings


    $form = parent::buildForm($form, $form_state);

    $form['custom_types'] = array(
      '#type' => 'checkboxes',
      '#title' => t('Content Types'),
      '#description' => t('Configure where the custom button should appear.'),
      '#options' => node_type_get_names(),
      '#default_value' => $config->get('custom_types', array()),
    );

    return $form;
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    $config = $this->config('custom.settings');
    $config->set('custom_types', $form_state->getValue('custom_types')); 
    $config->save(); // save data in custom.settings

    return parent::submitForm($form, $form_state);

  }

  public function getEditableConfigNames() {
    return ['custom.settings'];
  }

}

现在当您保存管理表单时,然后在“custom.module”文件中获取已保存的数据后使用此代码。

在自定义文件夹中创建“custom.module”文件。

$config =  \Drupal::config('custom.settings');  // get saved settings
$types = $config->get('custom_types', array()); // fetch particular saved data "custom_types"
print $types;

现在启用此模块 您的管理员表单路径为 YOUR_SITE_NAME / admin / config / custom / config

同样在Drupal 8中,有时会出现缓存问题,因此如果出现任何问题,请在表单保存后清除缓存。