在Drupal 8中,要让它访问web根目录之外的配置文件,可以按照以下步骤进行操作:
services:
custom_module.config:
class: Drupal\Core\Config\ConfigFactoryOverrideInterface
tags:
- { name: config.factory.override }
arguments: ['@config.factory']
my_config_path: '../config/myconfig.yml'
<?php
namespace Drupal\custom_module\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
class CustomModuleSettingsForm extends ConfigFormBase {
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return ['custom_module.settings'];
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'custom_module_settings_form';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config('custom_module.settings');
$form['my_config_path'] = [
'#type' => 'textfield',
'#title' => $this->t('My Config Path'),
'#default_value' => $config->get('my_config_path'),
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$this->config('custom_module.settings')
->set('my_config_path', $form_state->getValue('my_config_path'))
->save();
parent::submitForm($form, $form_state);
}
}
custom_module.settings_form:
path: '/admin/config/custom_module/settings'
defaults:
_form: '\Drupal\custom_module\Form\CustomModuleSettingsForm'
_title: 'Custom Module Settings'
requirements:
_permission: 'administer site configuration'
现在,Drupal 8将能够访问位于web根目录之外的配置文件。你可以在自定义模块的配置表单中设置配置文件的路径,并在代码中使用该配置。请注意,这只是一种方法,你可以根据自己的需求进行调整和扩展。
领取专属 10元无门槛券
手把手带您无忧上云