保存时修改管理配置值
Modify admin configuration values on save
我在 Grav 的管理面板中创建了一个配置表单,我想 extend/modify 保存其中的一些值。
更准确地说,我有一个列表表单元素,在蓝图中看起来像这样:
topics:
type: list
fields:
.name:
type: text
.unique_id:
type: text
readonly: true
default: generate_on_save
保存时,我想用唯一 ID 替换所有 generate_on_save
值。
我试图连接到 onAdminSave Event, but the Event Object contained just an instance of \Grav\Common\Data\Blueprint 但没有实际的表单数据。然后我尝试修改请求对象,但是当我在grav容器中注册修改后的请求时,我得到一个错误Cannot override frozen service 'request'
。
我怎样才能完成这个任务?
我做了以下工作正常:
- 在配置文件 /user/themes/quark/blueprints.yaml 中,我复制了您的字段定义。
- 在后台我在Quark主题的配置页面添加了一些主题。
- 'Save' 操作被以下事件处理程序捕获:
public function onAdminSave(Event $event) {
/** @var Data */
$form = $event['object'];
$topics = $form['topics'];
foreach ($topics as &$topic) {
if ($topic['unique_id'] === 'generate_on_save') {
$topic['unique_id'] = str_rot13($topic['name']);
}
}
// Note: Updated $form['topics'] must be re-assigned
$form['topics'] = $topics;
}
- 具有“唯一”值的主题已正确写入 /user/config/themes/quark.yaml
我在 Grav 的管理面板中创建了一个配置表单,我想 extend/modify 保存其中的一些值。 更准确地说,我有一个列表表单元素,在蓝图中看起来像这样:
topics:
type: list
fields:
.name:
type: text
.unique_id:
type: text
readonly: true
default: generate_on_save
保存时,我想用唯一 ID 替换所有 generate_on_save
值。
我试图连接到 onAdminSave Event, but the Event Object contained just an instance of \Grav\Common\Data\Blueprint 但没有实际的表单数据。然后我尝试修改请求对象,但是当我在grav容器中注册修改后的请求时,我得到一个错误Cannot override frozen service 'request'
。
我怎样才能完成这个任务?
我做了以下工作正常:
- 在配置文件 /user/themes/quark/blueprints.yaml 中,我复制了您的字段定义。
- 在后台我在Quark主题的配置页面添加了一些主题。
- 'Save' 操作被以下事件处理程序捕获:
public function onAdminSave(Event $event) { /** @var Data */ $form = $event['object']; $topics = $form['topics']; foreach ($topics as &$topic) { if ($topic['unique_id'] === 'generate_on_save') { $topic['unique_id'] = str_rot13($topic['name']); } } // Note: Updated $form['topics'] must be re-assigned $form['topics'] = $topics; }
- 具有“唯一”值的主题已正确写入 /user/config/themes/quark.yaml