name: custom
description: Show admin saved data through custom module.
type: module
# core: 8.x
configure: admin/config/services/custom
whoアクセス管理フォームのアクセス許可を作成します。
「カスタム」フォルダ内に「custom.permissions.yml」というファイルを作成します。
'administer custom':
'title': 'Administer Customform'
'description': 'Configure how Custom Form is used on the site.'
restrict access: true
は、それがコンテンツのカスタム管理フォームのパス&のルートを作成します。
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.links.menu.yml」ファイルを「カスタム」フォルダ内に作成します。管理フォームの
custom.config:
title: 'Custom '
description: 'Custom Admin Configuration'
parent: system.admin_config
route_name: custom.config
weight: 100
カスタムフォルダ内の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'];
}
}
のsrc /フォーム/ CustomConfigForm.phpです保存したデータを "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;
このモジュールを有効にします。
あなたのadminフォームのパスは、キャッシュの問題が発生する時々のDrupal 8にもYOUR_SITE_NAME /管理/設定/カスタム/ configに
で、そうならばすべての問題は、フォーム保存した後にキャッシュをクリアしています。
ありがとうございました。非常に簡潔で簡単に従うことができます。今、私はページにアクセスしようとすると、私のエラーログにポップアップしています。私のカスタムモジュールはgoogle-calendarか名前空間google_calendarです。 InvalidArgumentException: "\ Drupal \ google_calendar \ Form \ GoogleCalendarConfigForm"クラスが存在しません。 Drupal \ Core \ DependencyInjection \ ClassResolver-> getInstanceFromDefinition()(/home/vagrant/Sites/gordon/core/lib/Drupal/Core/DependencyInjection/ClassResolver.phpの24行目)。 設定フォームは、確かにFormディレクトリにあります。 – relevantChuck
そしておそらくaddtl infoが役立ちます。私のカスタムモジュールディレクトリはgoogle-calendarで、私のコントローラの名前空間にはDrupal \ google_calendar \ Controllerです。 – relevantChuck
"google-calender.routing.yml"ファイル_form:pathとGoogleCalenderConfigFormで使用される名前空間 –