Рейтинг:2

Невозможно предварительно выбрать часовой пояс в hook_form_alter

флаг ba

Я пишу собственный профиль установки/дистрибутив и хочу предварительно заполнить некоторые поля в форме «Настроить сайт» (/ядро/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['region_settings']['site_default_country']['#default_value'] = 'DE';
  $form['regional_settings']['date_default_timezone']['#default_value'] = 'Европа/Берлин';
}

Как вы можете видеть на скриншоте, мне удается изменить Страна по умолчанию успешно, но не Часовой пояс по умолчанию.

Однако «странно» то, что когда я проверяю код, я вижу, что правильный часовой пояс был выбран но форма отображается Лондон.

введите описание изображения здесь

Я живу в Великобритании, так что, думаю, Лондон был выбран именно так.

Кто-нибудь знает, как это исправить? Заранее спасибо!

Рейтинг:4
флаг cn

Drupal добавляет JS для определения часового пояса (через core/misc/timezone.js). Это мешает вашему коду, но его можно легко удалить:

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

Это удаляет часовой пояс-обнаружение класс из <select>, предотвращая его обработку JS.

consuela avatar
флаг ba
Большое спасибо, Клайв! Это решило мою проблему.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.