Drupal 自定义表单记住文本字段数据
Posted
技术标签:
【中文标题】Drupal 自定义表单记住文本字段数据【英文标题】:Drupal custom form remembering textfield data 【发布时间】:2011-12-02 02:50:34 【问题描述】:我正在为一个新模块设置一个配置页面,但我无法让我的文本字段记住我之前输入的数据。
我通过调用 variable_get 设置#default_value,但该值永远不会在文本字段中重置。然而,它被正确地存储为变量并在变量编辑器页面上可见。
下面是代码片段:
$form = array();
$form['username'] = array(
'#type' => 'textfield',
'#title' => t('Username'),
'#default_value' => variable_get('username', '' ),
'#description' => t('supply the username'),
'#maxlength' => 30,
'#required' => TRUE,
'#weight' => -1,
);
return system_settings_form($form);
我该如何解决这个问题?
更新代码
提交函数如下:
function mymodule_settings_submit($form, &$form_state)
drupal_set_message('form submit responding : ' . $form_state['values']['username'] );
variable_set( 'username', $form_state['values']['username'] );
更新代码 #2
完整代码:
function my_module_init()
function my_module_menu()
$items = array();
$items['admin/settings/helper'] = array(
'title' => 'helper',
'page callback' => 'drupal_get_form',
'page arguments' => array('helper_setup'),
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
function helper_setup()
$node_types = node_get_types('names');
$form = array();
$form['username'] = array(
'#type' => 'textfield',
'#title' => t('Username'),
'#default_value' => variable_get('username', '' ),
'#description' => t('supply the username'),
'#maxlength' => 30,
'#required' => TRUE,
'#weight' => -1,
);
$form['#submit'][] = 'my_module_settings_submit';
return system_settings_form($form);
function my_module_validate($form, &$form_state)
die('validation area responding!');
function my_module_settings_submit($form, &$form_state)
drupal_set_message('form submit responding : ' . $form_state['values']['username'] );
variable_set( 'username', $form_state['values']['username'] );
【问题讨论】:
【参考方案1】:在您的表单提交功能中,您应该插入variable_set('variableName' , 'value')
变量不会自动插入..
更新:
$form['username'] = array(
'#type' => 'textfield',
'#title' => t('Username'),
'#default_value' => variable_get('username', '' ),
'#description' => t('supply the username'),
'#maxlength' => 30,
'#required' => TRUE,
'#weight' => -1,
);
$form['#submit'][] = '_myform_submit_function' ;
return system_settings_form($form);
现在让我们构建您的提交功能
function _myform_submit_function($form,&$form_state )
variable_set('username', $form_state['values']['username']) ;
drupal_set_message('form submit responding : ' . $form_state['values']['username'] );
现在清除缓存并告诉我它是否工作
【讨论】:
谢谢。我试过你的方法,但没有奏效。如果第一个参数不存在,则第二个参数应该是默认值。由于提交表单时文本字段中提供的值被保存为drupal值,因此variable_set函数的第一个参数应该包含该值并在页面刷新时填充文本字段 - 但它不起作用??? 我可以看看你的表单提交功能吗? 提交功能做的很少。我只是调用 drupal_set_message 并从 $form_state 数组中输出文本字段的值。它确认用户输入的提供的值,但问题是将该值设置回文本字段 '#default_value' => variable_get('username', '' ), .... variable_get 如何调用 variable 不存在你应该调用 variable_set('username' , $form_state['values ']['用户名']);将表单的值设置为名为 username 的变量 ...然后从 variable_get 调用此值 我在上面的代码中包含了表单提交功能。我执行了你的建议,但没有奏效......除非我错过了重点并做错了什么???以上是关于Drupal 自定义表单记住文本字段数据的主要内容,如果未能解决你的问题,请参考以下文章
Drupal,Ubercart - 将自定义字段添加到结帐表单
如何使用 drupal 6 中的自定义字段将自定义版本的节点/添加表单放在视图中?