我的ajax Drupal表单显示旧值

时间:2014-09-08 10:21:55

标签: forms drupal

我已经开发了ajax drupal并使用#ajax键和回调函数在其中添加一个表单(textfield和button),我在其中处理并返回我的表单新元素。

因此,当我开始添加我的数据表单时,它对我来说很好,并且 form_state ['values'] 更新正常。

这里的问题是当我重新加载表单并添加一些数据时, form_state ['values'] 在我的表单字段中不一样。

这是我的代码:

function my_horoscope_menu() {
$items = array();

$items['admin/horoscopes'] = array(
    'title' => 'Horoscopes',
    'page callback'    => 'drupal_get_form',
    'page arguments' => array('my_horoscope_admin_form'),
    'access arguments' => array('Administer site configuration '),
    //'type' => MENU_LOCAL_TASK,
);
return $items;

}

function my_horoscope_admin_form($form, &$form_state) {

$form['settings']['horoscopes']['add_horoscopes'] = array(
    '#type'        => 'fieldset',
    '#title'       => t('Add horoscopes'),
    '#collapsible' => TRUE,
    '#collaspsed'  => TRUE,
);
$form['settings']['horoscopes']['add_horoscopes']['name'] = array(
    '#type'            => 'textfield',
    '#title'           => t('Horoscope name'),
    '#default_value'   => t('Horoscope name'),
    '#size'            => 20,
    '#maxlength'       => 60,
    '#required'        => FALSE,
);
$form['settings']['horoscopes']['add_horoscopes']['beginning_date_rang'] = array(
    '#type'      => 'date',
    '#title'     => t('Horoscope beginning date rang'),
    '#description'      => t('Set the beginning date rang of this horoscope.'),
    '#required'  => FALSE,
);
$form['settings']['horoscopes']['add_horoscopes']['ending_date_rang'] = array(
    '#type'      => 'date',
    '#title'     => t('Horoscope ending date rang'),
    '#description'      => t('Set the ending date rang of this horoscope.'),
    '#required'  => FALSE,
);
$form['settings']['horoscopes']['add_horoscopes']['add_button'] = array(
    '#type' => 'button',
    '#value' => t('Add this horoscope'),
    '#submit' => array(''),
    '#ajax'   => array(
        'event' => 'click',
        'callback' => 'add_horoscope_ajax_process',
        'wrapper'  => 'add_horoscope_wrapper',
    ),
);
$form['settings']['horoscopes']['add_horoscopes']['adding_horoscope_wrapper'] = array(
    '#type' => 'markup',
    '#prefix' => '<div id="add_horoscope_wrapper">',
    '#suffix' => '</div>',
);

return $form;
}

function add_horoscope_ajax_process ($form, &$form_state) {

if (isset($form_state['values'])) {

    if (isset($form_state['values']['name']) AND $form_state['values']['name'] != '') {
        $name = $form_state['values']['name'];
    }
    if (isset($form_state['values']['beginning_date_rang']) AND $form_state['values']['beginning_date_rang'] != '') {
        $beginning_date_rang = $form_state['values']['beginning_date_rang'];
        $beginning_date_rang1 = sprintf("%04d-%02d-%02d", $beginning_date_rang['year'], $beginning_date_rang['month'], $beginning_date_rang['day']);
    }
    if (isset($form_state['values']['ending_date_rang']) AND $form_state['values']['ending_date_rang'] != '')       {
        $ending_date_rang = $form_state['values']['ending_date_rang'];
        $ending_date_rang1 = sprintf("%04d-%02d-%02d", $ending_date_rang['year'], $ending_date_rang['month'], $ending_date_rang['day']);
    }
    // Prepare record to add
    $record = array(
        'h_name'       => $name,
        'h_date_begin' => $beginning_date_rang1,
        'h_date_end'   => $ending_date_rang1,
    );
    // Add the record
    $res = drupal_write_record('my_horoscope_structure', $record);
    if($res != FALSE) {
        drupal_set_message(t('Horoscope @name is inserted successfully!', array('@name' => $name)));
    }

}
// return $form
return $form['settings']['horoscopes']['add_horoscopes']['adding_horoscope_wrapper'];

}

0 个答案:

没有答案