Tôi có một nút được liên kết thông qua bộ điều khiển để mở biểu mẫu tùy chỉnh theo phương thức:
Bộ điều khiển gọi lại là:
/**
* Gọi lại để mở biểu mẫu phương thức.
*/
chức năng công khai openShareLinkModalForm() {
$response = new AjaxResponse();
// Lấy biểu mẫu phương thức bằng trình tạo biểu mẫu.
$modal_form = $this->formBuilder->getForm('Drupal\ssc_wsl\Form\ShareLinkModalForm');
// Thêm lệnh AJAX để mở hộp thoại modal với nội dung là form.
$response->addCommand(new OpenModalDialogCommand($this->t('Chia sẻ liên kết tới trang này.'), $modal_form, ['width' => '1200']));
trả lại phản hồi $;
}
}
điều này hoạt động tốt ngoại trừ khi nút của tôi ở trên trang FR, phương thức vẫn mở ở EN.
Từ một thủ thuật tôi đã sử dụng ở nơi khác, tôi đã thử thêm mã này vào lệnh gọi lại ngay trước lệnh gọi getForm():
$language_manager = \Drupal::languageManager();
$langcode = $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
$language = $language_manager->getLanguage($langcode);
$language_manager->setConfigOverrideLanguage($language);
Điều này không có tác động. Cuộc gọi lại của bộ điều khiển dường như dựa trên bản dịch từ giá trị trong: $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT) và giá trị đó luôn là giá trị mặc định được đặt cho trang web (nếu tôi đặt ngôn ngữ trang web mặc định thành FR; thì chỉ phương thức hiển thị trong FR).
Câu hỏi đặt ra là, đây có phải là cách thích hợp để đặt ngôn ngữ được sử dụng bởi phương thức không?