Drupal 8的新手,我来自WP世界,所以很难搞清楚事情。我创建了一个自定义模块并有一个页面输出文本。我被困的地方是能够在管理区域中创建一个字段,拉出保存的信息,然后在我输出的内容中使用它。
一直跟着教程,但我很困难。任何人都可以为我提供路线图或有用的文章来实现这一目标吗?
答案 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中,有时会出现缓存问题,因此如果出现任何问题,请在表单保存后清除缓存。