ฉันมีโมดูลแบบกำหนดเองที่กำลังทำอยู่ และต้องการให้กำหนดค่าผ่านเมนูผู้ดูแลระบบ ฉันประสบปัญหาในการทำให้แบบฟอร์มปรากฏในหน้าผู้ดูแลระบบ
การไปที่ admin/config/MYMODULE จะแสดงแบบฟอร์ม แต่ไม่สามารถมองเห็นได้ในหน้า /admin/config
นี่คือโครงสร้างไฟล์ของฉันจนถึงตอนนี้ (ไม่รวมไฟล์ที่ไม่เกี่ยวข้อง):
*ไฟล์แบบฟอร์มเป็นเพียงตัวอย่างแบบฟอร์มเพื่อพยายามให้ปรากฏในหน้าผู้ดูแลระบบ
MYMODULE.routing.yml
MYMODULE การตั้งค่า:
เส้นทาง: '/admin/config/system/MYMODULE'
ค่าเริ่มต้น:
_form: '\Drupal\MYMODULE\Form\myModuleSettingsForm'
_title: 'การตั้งค่าโมดูลของฉัน'
ความต้องการ:
_permission: 'จัดการการกำหนดค่าไซต์'
MYMODULE.schema.yml
MYMODULE การตั้งค่า:
ประเภท: config_object
ป้ายกำกับ: 'การตั้งค่า myModule'
การทำแผนที่:
เส้นทาง_to_sound:
ประเภท: สตริง
ป้ายกำกับ: 'เส้นทางสู่เสียง'
MYMODULE.links.menu.yml
MYMODULE การตั้งค่า:
ชื่อเรื่อง: 'การตั้งค่า myModule'
คำอธิบาย: 'แก้ไขการตั้งค่า myModule'
route_name: MYMODULE.settings
พาเรนต์: system.admin_config_system
MYMODULE.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);
$แบบฟอร์ม['example_thing'] = [
'#type' => 'ช่องข้อความ',
'#title' => $this->t('สิ่งของ'),
'#default_value' => $config->get('example_thing'),
];
ส่งคืนพาเรนต์::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
ฟังก์ชันสาธารณะ submitForm (อาร์เรย์ &$form, FormStateInterface $form_state) {
// ดึงการกำหนดค่า
$this->configFactory->getEditable(คงที่::SETTINGS)
// ตั้งค่าการกำหนดค่าที่ส่ง
->set('example_thing', $form_state->getValue('example_thing'))
// คุณสามารถตั้งค่าได้หลายค่าพร้อมกันโดยทำ
// โทรหลายชุด ()
->บันทึก();
parent::submitForm($form, $form_state);
}
}
ฉันเข้าใจว่าตอนนี้ฉันควรจะเห็นแบบฟอร์มนี้ในหน้าการกำหนดค่าแล้ว แต่ฉันไม่เห็น ไม่ว่าจะมีการล้างแคช ฯลฯฉันทำตามเอกสารประกอบเพื่อทำสิ่งนี้และแม้กระทั่งการอ้างอิงข้ามโมดูลยอดนิยมอื่น ๆ ดังนั้นฉันจึงไม่แน่ใจว่าฉันทำอะไรผิด