У меня есть пользовательский модуль, над которым я работаю, и я хотел бы настроить его через меню администратора. У меня возникли трудности с отображением формы на странице администратора.
При просмотре admin/config/MYMODULE форма действительно отображается, просто ее не видно на странице /admin/config.
Вот моя файловая структура (за исключением ненужных файлов):
* Файл формы — это всего лишь пример формы, чтобы попытаться отобразить его на странице администратора.
МОЙ МОДУЛЬ.routing.yml
МОЙ МОДУЛЬ.Настройки:
путь: '/admin/config/system/MYMODULE'
значения по умолчанию:
_form: '\Drupal\MYMODULE\Form\myModuleSettingsForm'
_title: 'Настройки моего модуля'
требования:
_permission: «администрирование конфигурации сайта»
МОЙМОДУЛЬ.schema.yml
МОЙ МОДУЛЬ.Настройки:
тип: config_object
label: 'Настройки моего модуля'
сопоставление:
путь_к_звуку:
тип: строка
лейбл: 'Путь к звуку'
МОЙ МОДУЛЬ.links.menu.yml
МОЙ МОДУЛЬ.Настройки:
title: 'Настройки моего модуля'
description: 'Изменить настройки myModule'
имя_маршрута: MYMODULE.settings
родитель: system.admin_config_system
МОЙ МОДУЛЬ.settings.yml
дорожка:
path_to_sound: '/modules/custom/MYMODULE/myModule.mp3'
myModuleSettingsForm.php
<?php
пространство имен Drupal\MYMODULE\Form;
используйте Drupal\Core\Form\ConfigFormBase;
используйте Drupal\Core\Form\FormStateInterface;
/**
* Настройте примерные параметры для этого сайта.
*/
класс myModuleSettingsForm расширяет ConfigFormBase {
/**
* Настройки конфигурации.
*
* @var строка
*/
const SETTINGS = 'MYMODULE.settings';
/**
* {@inheritdoc}
*/
публичная функция getFormId() {
вернуть 'MYMODULE_admin_settings';
}
/**
* {@inheritdoc}
*/
защищенная функция getEditableConfigNames() {
возвращаться [
статический :: НАСТРОЙКИ,
];
}
/**
* {@inheritdoc}
*/
общедоступная функция buildForm (массив $ form, FormStateInterface $ form_state) {
$config = $this->config(static::SETTINGS);
$form['example_thing'] = [
'#тип' => 'текстовое поле',
'#title' => $this->t('Вещи'),
'#default_value' => $config->get('example_thing'),
];
вернуть parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
публичная функция submitForm (массив и $ форма, FormStateInterface $ form_state) {
// Получить конфигурацию.
$this->configFactory->getEditable(static::SETTINGS)
// Установите отправленный параметр конфигурации.
->set('example_thing', $form_state->getValue('example_thing'))
// Вы можете установить сразу несколько конфигураций, сделав
// несколько вызовов set().
-> сохранить();
родитель::submitForm($form, $form_state);
}
}
Насколько я понимаю, теперь я должен видеть эту форму на странице конфигурации, но я этого не делаю, несмотря на очистку кеша и т. д.Я следовал документации, чтобы сделать это, и даже ссылался на другие популярные модули, поэтому я действительно не уверен, что делаю неправильно.