ฉันมีปุ่มที่เชื่อมโยงผ่านตัวควบคุมเพื่อเปิดแบบฟอร์มที่กำหนดเองในโมดอล:
การเรียกกลับของคอนโทรลเลอร์คือ:
/**
* โทรกลับเพื่อเปิดแบบฟอร์มโมดอล
*/
ฟังก์ชั่นสาธารณะ openShareLinkModalForm () {
$response = ใหม่ AjaxResponse();
// รับแบบฟอร์มโมดอลโดยใช้ตัวสร้างแบบฟอร์ม
$modal_form = $this->formBuilder->getForm('Drupal\ssc_wsl\Form\ShareLinkModalForm');
// เพิ่มคำสั่ง AJAX เพื่อเปิดกล่องโต้ตอบโมดอลที่มีฟอร์มเป็นเนื้อหา
$response->addCommand(new OpenModalDialogCommand($this->t('Share the link to this page.'), $modal_form, ['width' => '1200']));
ส่งคืน $response;
}
}
ใช้งานได้ดียกเว้นเมื่อปุ่มของฉันอยู่บนหน้า FR โมดอลยังคงเปิดใน EN
จากเคล็ดลับที่ฉันเคยใช้ที่อื่น ฉันลองเพิ่มโค้ดนี้ในการโทรกลับก่อนการเรียก getForm():
$language_manager = \Drupal::languageManager();
$langcode = $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
$language = $language_manager->getLanguage($langcode);
$language_manager->setConfigOverrideLanguage($ภาษา);
สิ่งนี้ไม่มีผลกระทบ ดูเหมือนว่าการเรียกกลับของคอนโทรลเลอร์จะอ้างอิงการแปลตามค่าใน: $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT) และค่านั้นจะเป็นค่าเริ่มต้นที่ตั้งไว้สำหรับไซต์เสมอ (หากฉันตั้งค่าภาษาไซต์เริ่มต้นเป็น FR จากนั้นจะเป็นโมดอลเท่านั้น แสดงใน FR)
คำถามคือ นี่เป็นวิธีที่เหมาะสมในการตั้งค่าภาษาที่ใช้โดย modal หรือไม่