Am un modul personalizat la care lucrez și aș dori să îl fac configurabil prin meniul de administrare. Întâmpin dificultăți în a obține un formular să apară în pagina de administrare.
Vizitarea admin/config/MYMODULE arată formularul, pur și simplu nu este vizibil pe pagina /admin/config.
Iată structura mea de fișiere până acum (excluzând fișierele irelevante):
*Fișierul formular este doar un exemplu de formular pentru a încerca să îl faceți să apară pe pagina de administrare.
MYMODULE.routing.yml
MYMODULE.settings:
cale: „/admin/config/system/MYMODULE”
implicite:
_form: „\Drupal\MYMODULE\Form\myModuleSettingsForm”
_title: „Setări modul meu”
cerinte:
_permission: „administrați configurația site-ului”
MYMODULE.schema.yml
MYMODULE.settings:
tip: config_object
etichetă: „myModule Settings”
cartografiere:
drum_to_sound:
tip: sfoară
etichetă: „Path to Sound”
MYMODULE.links.menu.yml
MYMODULE.settings:
titlu: „Setări modul meu”
descriere: „Alterează setările myModule”
nume_rută: MYMODULE.settings
părinte: system.admin_config_system
MYMODULE.settings.yml
cale:
path_to_sound: „/modules/custom/MYMODULE/myModule.mp3”
myModuleSettingsForm.php
<?php
spațiu de nume Drupal\MYMODULE\Form;
utilizați Drupal\Core\Form\ConfigFormBase;
utilizați Drupal\Core\Form\FormStateInterface;
/**
* Configurați exemplu de setări pentru acest site.
*/
clasa myModuleSettingsForm extinde ConfigFormBase {
/**
* Setări de configurare.
*
* @var șir
*/
const SETTINGS = 'MYMODULE.settings';
/**
* {@inheritdoc}
*/
funcția publică getFormId() {
returnează „MYMODULE_admin_settings”;
}
/**
* {@inheritdoc}
*/
funcția protejată getEditableConfigNames() {
întoarcere [
static::SETĂRI,
];
}
/**
* {@inheritdoc}
*/
funcția publică buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config(static::SETTINGS);
$form['example_thing'] = [
'#type' => 'câmp text',
'#title' => $this->t('Lucruri'),
'#default_value' => $config->get('example_thing'),
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
funcția publică submitForm(matrice &$form, FormStateInterface $form_state) {
// Preluați configurația.
$this->configFactory->getEditable(static::SETTINGS)
// Setați setarea de configurare trimisă.
->set('example_thing', $form_state->getValue('example_thing'))
// Puteți seta mai multe configurații simultan prin realizarea
// apeluri multiple la set().
->salvare();
parent::submitForm($form, $form_state);
}
}
Înțeleg că acum ar trebui să pot vedea acest formular pe pagina de configurare, dar nu o fac, indiferent de ștergerea cache-ului etc.Am urmat documentația pentru a face acest lucru și chiar am făcut referințe încrucișate la alte module populare, așa că nu sunt sigur ce greșesc.