开发者

Drupal custom form remembering textfield data

开发者 https://www.devze.com 2023-04-11 07:35 出处:网络
I am setting up a configuration page for a new module and I am having trouble getting my textfield to remember data I previously entered.

I am setting up a configuration page for a new module and I am having trouble getting my textfield to remember data I previously entered.

I am setting #default_value by calling variable_get but the value never gets reset in the textfield. It is however correctly stored as a variable and visible on the variable editor page.

Below is a code fragment:

$form   =   array();

$form['username']   =   array(
    '#type'                     =>  'textfi开发者_StackOverfloweld',
    '#title'                    =>  t('Username'),
    '#default_value'            =>  variable_get('username', '' ),
    '#description'              =>  t('supply the username'),
    '#maxlength'                =>  30,
    '#required'                 =>  TRUE,
    '#weight'                   =>  -1,
);

return system_settings_form($form);

How can I fix this?

Updated code

The submit function is as follows:

    function mymodule_settings_submit($form, &$form_state){
    drupal_set_message('form submit responding : ' . $form_state['values']['username'] );
    variable_set( 'username', $form_state['values']['username'] );
}

Updated code #2

The full code:

    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'] );
}


in your form submit function you should insert variable_set('variableName' , 'value') variables is not inserted automatically..

UPDATE:

$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);

now lets build your submit function

function _myform_submit_function($form,&$form_state ) {
variable_set('username', $form_state['values']['username']) ; 
drupal_set_message('form submit responding : ' . $form_state['values']['username'] );
}

now clear the cache and tell me if its working or not

0

精彩评论

暂无评论...
验证码 换一张
取 消