hook_form_alter не срабатывает при обновлении страницы - PullRequest
0 голосов
/ 25 апреля 2020

Я создал модуль Drupal7 и пытаюсь загрузить значения в hook_form_alter. После сохранения это работает, но когда я обновляю sh страницу, она отключается. Чтобы показать вам проблему, я печатаю время в hook_form_alter, и оно не обновляется. Любые идеи, почему это не показывает новую метку времени, когда я refre sh страницы?

<?php

function bank_info_menu() {
  $items = array();
  $items['bank-info'] = [
      'title' => 'My Banking Info',
      'page callback' => 'drupal_get_form',
      'page arguments' => array('bank_info_form'),
      'access callback' => 'bank_info_check_role',
      'type' => MENU_NORMAL_ITEM,
  ];

  return $items;
}

function bank_info_form($form, &$form_state) {
  $form['bank_account_number'] = array(
    '#type' => 'textfield',
    '#title' => t('Bank Account Number'),
    '#default_value' => '',
    '#maxlength' => 20,
  );

  return $form;
}

function bank_info_form_submit($form, &$form_state) {
  global $user;
  $obj = entity_metadata_wrapper('user', $user);
  if(array_key_exists('bank_account_number', $form_state['values'])){
    $obj->bank_account_number = $form_state['values']['bank_account_number'];
  }
  $obj->save();
  drupal_set_message('Saved banking information successfully.');
}


function bank_info_form_alter(&$form, &$form_state, $form_id){
  if ($form['#id'] == 'bank-info-form') {
    echo date("h:i:sa");
  }
}

1 Ответ

0 голосов
/ 26 апреля 2020

Код имеет один недостаток. Он использует $ form ['# id'] в предложении 'if'. $ form ['# id'] обычно используется для атрибута формы 'id' и может изменяться в некоторых случаях. Вместо этого используйте переменную $ form_id.

if ($form_id == 'bank_info_form') {
  echo date("h:i:sa");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...