簡體   English   中英

保存時修改管理員配置值

[英]Modify admin configuration values on save

我在 Grav 的管理面板中創建了一個配置表單,我想在保存時擴展/修改它的一些值。 更准確地說,我在藍圖中有一個如下所示的列表表單元素:

topics:
  type: list
  fields:
    .name:
      type: text
    .unique_id:
      type: text
      readonly: true
      default: generate_on_save

保存時,我想用唯一的 id 替換所有generate_on_save值。 我試圖掛鈎onAdminSave事件,但事件 Object 僅包含\Grav\Common\Data\Blueprint的一個實例,沒有實際的表單數據。 然后我嘗試修改請求 object,但是當我在 Grav 容器中注冊修改后的請求時,我收到錯誤Cannot override frozen service 'request'

我怎樣才能完成這項任務?

我做了以下工作正常:

  • 在配置文件/user/themes/quark/blueprints.yaml中,我復制了您的字段定義。
  • 在管理中,我在主題 Quark 的配置頁面上添加了一些主題。
  • 以下事件處理程序捕獲了“保存”操作:
     public function onAdminSave(Event $event) { /** @var Data */ $form = $event['object']; $topics = $form['topics']; // Note: foreach won't work for($i = 0; $i < count($topics); $i++) { if ($topics[$i]['unique_id'] === 'generate_on_save') { $topics[$i]['unique_id'] = str_rot13($topics[$i]['name']); } } // Note: Updated $form['topics'] must be re-assigned $form['topics'] = $topics; }
  • 具有“唯一”值的主題已正確寫入/user/config/themes/quark.yaml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM