簡體   English   中英

Drupal 8 Webform 為上傳的文件名添加前綴

[英]Drupal 8 Webform add prefix to uploaded file names

我有一個帶有文件上傳字段的網絡表單。 我需要做兩件事之一。 將文件上傳到私有區域內的子文件夾中,或者為用戶正在上傳的文件名添加前綴。 用戶可以上傳多個文件。 網絡表單編輯器允許您“重命名”文件並為此使用令牌,但我看不到任何保留原始文件名的方法。 我可以破解 WebformManagedFileBase.php 中的 getFileDestinationUri() 來做我想做的事,但顯然我不想那樣做。 我錯過了什么嗎?

事實證明,您可以使用 drupal 形式更改掛鈎來更改目的地。 我曾想過這一點,但覺得不太可能奏效。 確實如此。

以下是我的代碼解決方案:(我可能缺少容器類型)

function _mymodule_fix_elements(&$elements) {
  foreach ($elements as $key => &$element) {
    if (strpos($key, '#') !== 0) {
      if (is_array($element)) {
        if (isset($element['#type'])) {
          if (($element['#type'] == 'fieldset') ||
              ($element['#type'] == 'webform_flexbox') ||
              ($element['#type'] == 'container')) {
            _mymodule_fix_elements($element);
          } else if ($element['#type'] == 'managed_file') {
            $pattern = $element['#upload_location'];
            if (strpos($pattern, 'private:') === 0) {
              $element['#upload_location'] = $pattern . '/' . $key;
            }
          }
        }
      }
    }
  }
}

function mymodule_form_alter(&$form, &$form_state, $id) {
  if (strpos($id, 'webform_') === 0) {
    _mymodule_fix_elements($form['elements']);
  }
}

暫無
暫無

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

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