У меня есть кнопка, связанная через контроллер, чтобы открыть пользовательскую форму в модальном режиме:
Обратный вызов контроллера:
/**
* Обратный вызов для открытия модальной формы.
*/
публичная функция openShareLinkModalForm() {
$response = новый AjaxResponse();
// Получить модальную форму с помощью конструктора форм.
$modal_form = $this->formBuilder->getForm('Drupal\ssc_wsl\Form\ShareLinkModalForm');
// Добавьте команду AJAX, чтобы открыть модальное диалоговое окно с формой в качестве содержимого.
$response->addCommand(new OpenModalDialogCommand($this->t('Поделитесь ссылкой на эту страницу.'), $modal_form, ['width' => '1200']));
вернуть $ответ;
}
}
это работает нормально, за исключением того, что когда моя кнопка находится на странице FR, модальное окно по-прежнему открывается на английском языке.
Из трюка, который я использовал в другом месте, я попытался добавить этот код в обратный вызов непосредственно перед вызовом getForm():
$language_manager = \Drupal::languageManager();
$langcode = $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
$language = $language_manager->getLanguage($langcode);
$language_manager->setConfigOverrideLanguage($language);
Это не имеет никакого значения. Обратный вызов контроллера, по-видимому, основывается на переводе значения в: $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT), и это значение всегда является значением по умолчанию, установленным для сайта (если я устанавливаю язык сайта по умолчанию на FR; тогда только модальный шоу на фр.).
Вопрос в том, является ли это правильным способом установки языка, используемого модальным?