Score:0

ไฟล์ที่จัดการในการกำหนดค่าธีมไม่ได้บันทึก

ธง zw

ในการตั้งค่าธีมของฉันภายใต้ 'admin/appearance/settings/mytheme' ฉันกำลังพยายามเพิ่มฟิลด์รูปภาพ

ฉันได้เพิ่มสิ่งต่อไปนี้ใน mytheme.theme

ฟังก์ชัน mytheme_form_system_theme_settings_alter (&$form, Drupal\Core\Form\FormStateInterface $form_state) {
  $form['mytheme_settings']['footer_info']['footer_image'] = อาร์เรย์(
    '#type' => 'managed_file',
    '#title' => 'ภาพส่วนท้าย',
    '#name' => 'footer_file',
    '#default_value' => theme_get_setting('footer_image', 'mytheme'),
    '#upload_location' => 'สาธารณะ://'
  );
}

สิ่งนี้จะสร้างฟิลด์ไฟล์ในหน้าการตั้งค่าธีม เมื่อฉันอัปโหลดฟิลด์จะถูกบันทึกไว้ในไฟล์สาธารณะของฉัน

ตอนนี้ฉันกำลังพยายามเรนเดอร์ไฟล์นั้นเป็นเทมเพลตทวิก

ฉันเพิ่มสิ่งต่อไปนี้ใน mytheme.theme เพื่อยกเลิกตัวแปร

ฟังก์ชัน mytheme_preprocess_page(&$ตัวแปร) {
  $variables['footer_image'] = theme_get_setting('footer_image','mytheme');
}

จากนั้นเพิ่ม {{ ภาพส่วนท้าย }} ไปยังเทมเพลต แต่ไฟล์ไม่ได้รับการเรนเดอร์

ฉันจะเรียกไฟล์ที่ฉันอัปโหลดไปยังเทมเพลตธีมที่กำหนดเองได้อย่างไร ขอบคุณ

แก้ไข.

หลังจากค้นหาเพิ่มเติม ฉันพบว่าไฟล์ได้รับการอัปโหลด แต่ไฟล์กำลังถูกลบ

พอเจอแบบนี้ ลิงค์ ขอแนะนำให้ฉันส่งตำแหน่งไฟล์ที่ฉันได้ทำไปแล้ว

leymannx avatar
ne flag
สิ่งนี้ตอบคำถามของคุณหรือไม่ [ไฟล์ที่จัดการของฉันจะถูกลบหรือไม่](https://drupal.stackexchange.com/questions/277946/will-my-managed-file-get-deleted)
leymannx avatar
ne flag
คำถามแตกต่างกัน แต่คำตอบนั้นถูกต้อง
Score:1
ธง us

hook_form_system_theme_settings_alter() จำเป็นต้องเพิ่มตัวจัดการการส่งเพื่อจัดการไฟล์ที่จัดการ ใน Drupal core การดำเนินการของ hook เดียวที่ดำเนินการโดยโมดูลทดสอบ แต่รหัสนั้นเหมือนกับที่โมดูลปกติควรใช้ (ฉันไม่ได้แสดงองค์ประกอบแบบฟอร์มทั้งหมดที่เพิ่มจาก hook รหัสมาจาก test_theme_settings_form_system_theme_settings_submit().)

ฟังก์ชัน test_theme_settings_form_system_theme_settings_alter (&$form, FormStateInterface $form_state) {
  $form['custom_logo'] = [
    '#type' => 'managed_file',
    '#title' => t('โลโก้รอง'),
    '#default_value' => ธีม_get_setting('custom_logo'),
    '#progress_indicator' => 'บาร์',
    '#progress_message' => t('โปรดรอสักครู่...'),
    '#upload_location' => 'สาธารณะ://ทดสอบ',
    '#upload_validators' => [
      'file_validate_extensions' => [
        'gif png jpg jpg',
      ]
    ]
  ];

  $form['#submit'][] = 'test_theme_settings_form_system_theme_settings_submit';
}

ฟังก์ชัน test_theme_settings_form_system_theme_settings_submit(&$form, FormStateInterface $form_state) {
  ถ้า ($file_id = $form_state->getValue(['custom_logo', '0'])) {
    $file = File::load($file_id);
    $file->setPermanent();
    $file->save();
  }
}

หากไม่มีการตั้งค่าไฟล์ที่ได้รับการจัดการเป็นแบบถาวร ไฟล์นั้นจะถูกลบในไม่ช้า

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา