[英]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.