drupal-7 - 页面刷新时不会触发 hook_form_alter
问题描述
我已经制作了一个 Drupal7 模块,我正在尝试在 hook_form_alter 中加载值。保存后它可以工作,但是当我刷新页面时它会空白。为了向您展示问题,我在 hook_form_alter 中打印了时间并且它没有更新。有什么想法为什么在我刷新页面时它没有显示新的时间戳?
<?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");
}
}
解决方案
该代码有一个缺点。它在 'if' 子句中使用 $form['#id'] 。$form['#id'] 通常用于表单的 'id' 属性,在某些情况下可能会有所不同。改用 $form_id 变量。
if ($form_id == 'bank_info_form') {
echo date("h:i:sa");
}
推荐阅读
- python - 如何在 python 中使用 groupby 键作为 xticklabel
- python - RuntimeError:Factor 完全是奇异的(并且在 FiPy 中的正方形中遇到溢出)
- javascript - 将文档添加到云 Firestore 中的指定集合时如何更新文档?
- python - 没有零填充的 Pandas Resample-Sum
- python - Python - 如何按频率检查数字组合
- ios - 为什么这个简单的不透明动画在 SwiftUI 中不起作用?
- asp.net-mvc - 如何提高分页中的 Skip() Take() 性能?
- discord.js - TypeError [ERR_INVALID_ARG_TYPE]:“url”参数必须是字符串类型。收到 Array 的实例
- python - 我在 selenium python 上收到此错误
- javascript - 如何在嵌套数组javascript中找到最近的元素?