Пользовательская форма Drupal, запоминающая данные текстового поля - PullRequest
0 голосов
/ 06 октября 2011

Я настраиваю страницу конфигурации для нового модуля, и у меня возникают проблемы с получением моего текстового поля для запоминания ранее введенных данных.

Я устанавливаю #default_value, вызывая variable_get, но значение никогда не сбрасывается в текстовом поле. Однако он правильно хранится как переменная и отображается на странице редактора переменных.

Ниже приведен фрагмент кода:

$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 Ответ

1 голос
/ 06 октября 2011

в вашей функции отправки формы вы должны вставить 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'] );
}

Теперь очистите кеш и скажите, работает ли он или нет

...