Я пытаюсь повторно использовать вывод сильно настроенного средства форматирования поля как <select><option>
текст в веб-форме. Мне удалось повторно использовать отображение поля, но это имеет побочный эффект переключения темы, используемой для рендеринга.
Ниже приведен упрощенный код, строки $dateRenderArray = ...
и $dateHtml = ...
являются оригинальными и вызывают проблему:
function mymodule_webform_options_alter (массив и параметры $, элемент массива и $, идентификатор параметра $ = NULL) {
foreach ($options as $value => $text) {
$entity = getEntityByOption($value);
//повторно использовать вывод средства форматирования пользовательского поля
$dateRenderArray = $entity->get('field_daterange')->view('тизер');
//следующая строка вызывает смену темы
$dateHtml = \Drupal::service('рендерер')->renderPlain($dateRenderArray);
$datePlaintext = str_replace(["\n", " "], ["", " "], trim(strip_tags($dateHtml)));
$muchBetterOptionText = $someOtherPlaintextFromEntity. ' ' . $datePlaintext;
$options[$value] = $muchBetterOptionText;
}
}
Это отлично работает в форме внешнего интерфейса, для отправки электронных писем, а также в списке отправки веб-формы администратора.
Но в одном подробном представлении отправки веб-формы эти строки вызывают нежелательное изменение темы с темы администратора на тему внешнего интерфейса.
Вопрос:
Как я могу предотвратить смену темы от визуализироватьПлаин()
и сохранить тему администратора при просмотре одной отправки веб-формы?
Дополнительный бонусный вопрос:
Почему мой хук корректно работает в списке отправки веб-формы, а не в подробном представлении отправки веб-формы? В списке отправки используется точно такая же функция, он отображает тот же обработанный текст параметра в соответствующем столбце, но я правильно остаюсь внутри темы администратора при просмотре списка. Но только в подробном представлении переключается на тему интерфейса.