Score:2

ไม่สามารถเลือกเขตเวลาล่วงหน้าใน hook_form_alter

ธง ba

ฉันกำลังเขียนโปรไฟล์การติดตั้ง/การแจกจ่ายที่กำหนดเอง และฉันต้องการเติมบางฟิลด์ล่วงหน้าในแบบฟอร์ม 'กำหนดค่าไซต์' (/core/install.php). ฉันจัดการเพื่อเติมล่วงหน้า/เลือกฟิลด์อื่นล่วงหน้า เช่น (ชื่อไซต์, ที่อยู่อีเมลของไซต์ และ ประเทศเริ่มต้น) แต่ไม่สามารถเลือกล่วงหน้าได้ เขตเวลาเริ่มต้น สนาม. นี่คือรหัสที่ฉันใช้:

ฟังก์ชัน mydistribution_form_install_configure_form_alter (&$form, FormStateInterface $form_state) {
  $form['site_information']['site_name']['#default_value'] = 'ชื่อไซต์จำลอง';
  $form['site_information']['site_mail']['#default_value'] = '[email protected]';
  
  $form['regional_settings']['site_default_country']['#default_value'] = 'DE';
  $form['regional_settings']['date_default_timezone']['#default_value'] = 'ยุโรป/เบอร์ลิน';
}

อย่างที่คุณเห็นในภาพหน้าจอ ฉันจัดการเพื่อเปลี่ยน ประเทศเริ่มต้น สำเร็จแต่ไม่ใช่ เขตเวลาเริ่มต้น.

สิ่งที่ "แปลก" คือเมื่อฉันตรวจสอบรหัส ฉันพบว่าเขตเวลาที่ถูกต้องนั้นถูกต้อง เลือกแล้ว แต่การแสดงฟอร์ม ลอนดอน.

ป้อนคำอธิบายรูปภาพที่นี่

ฉันอาศัยอยู่ในสหราชอาณาจักร ดังนั้นฉันเดาว่านี่เป็นวิธีที่ลอนดอนได้รับเลือก

ไม่มีใครรู้วิธีการแก้ไขปัญหานี้? ขอบคุณล่วงหน้า!

Score:4
ธง cn

Drupal เพิ่ม JS เพื่อตรวจหาเขตเวลา (ผ่าน core/misc/timezone.js) สิ่งนี้รบกวนรหัสของคุณ แต่สามารถลบออกได้อย่างง่ายดาย:

unset($form['regional_settings']['date_default_timezone']['#attributes']);

สิ่งนี้จะลบ ตรวจจับเขตเวลา คลาสจาก <select>หยุดการประมวลผลโดย JS

consuela avatar
ba flag
ขอบคุณมากไคลฟ์! ที่แก้ไขปัญหาของฉัน

โพสต์คำตอบ

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