【问题标题】:Drupal 8 - Creating a simple module, using .settings fileDrupal 8 - 创建一个简单的模块,使用 .settings 文件
【发布时间】:2026-01-22 20:50:01
【问题描述】:

我只想完成一件事,在 .settings 文件中设置一个 var,然后在 .module 文件中使用这个 var。

听起来很简单,但我就是不知道怎么做。

到目前为止我做了什么:

-文件:
模块名称
_|-> 模块名.info.yml
_|-> 模块名.module
_|-> 配置
____|-> modulename.settings.yml

-modulename.settings.yml 的内容:

some_string: 'A string'
some_int: 42
some_bool: true

-modulename.info.yml 的内容:

name: modulename
type: module
description: 'Some description.'
package: Custom
version: 8.x-1.0
core: 8.x
configure: config/modulename
hidden: false

-modulename.module的内容:

<?php
...[omitted]...
print_r('Printed');
print_r(get_class(\Drupal::config('modulename.settings'))); //Prints 'Drupal\Core\Config\ImmutableConfig'
print_r(\Drupal::config('modulename.settings')->get('some_string')); //nothing
print_r(\Drupal::config('modulename.settings')->get('modulename.some_string')); //nothing
print_r(\Drupal::config('modulename')->get('some_string')); //nothing
print_r(\Drupal::config('config.modulename')->get('some_string')); //nothing
print_r(\Drupal::config('config.modulename.settings')->get('some_string')); //nothing

我可以安装此模块并在页面上打印一些信息,但我无法访问任何变量。

提前致谢。

【问题讨论】:

    标签: drupal-modules drupal-8


    【解决方案1】:

    您应该将 settings.yml 文件放在 modulename/config/install 文件夹中(可能您必须卸载并再次安装该模块)。

    关于信息文件中的“配置:配置/模块名称”的一个侧面说明:我认为这应该指向代表用于配置模块的页面的路由名称。

    【讨论】:

    • 非常感谢,就是这样,settings.yml 位于错误的文件夹中,刚刚移至“安装”文件夹,现在一切正常。在这种情况下,不需要指定路线。为了得到我的变量,我使用了print_r(\Drupal::config('modulename.settings')-&gt;get('some_string'));。抱歉迟到了,工作量很大;)。