我最近更改了我的表单以使用 Ajax 提交数据。我的表单接受来自用户的 (mm-dd-yyyy) 格式的日期,并且在此更改之前,我的 hook_submit 将代表我将其转换为 (yyyy-mm-dd) 格式,然后再将其发送到数据库. 更改后,它会跳过该步骤并将日期值按原样发送到数据库。
我不介意找到或编写自己的函数来进行转换,但在我这样做之前,我首先想了解它的本质。也许我以后会学到一些对我有帮助的东西。
任何帮助,将不胜感激。
我的问题是,为什么我的日期值是用 $form_data 而不是 $form_state 转换的?
使用 Drupal 7。
模块:日期 API、CTools、
//Original submit handler
//Format sent to DB: yyyy-mm-dd <--This is what I want for the Ajax version
function fsa_roster_form_submit($form_id, &$form_data){
$dcc_table = 'dcc_'.$form_data['values']['sid'];
$insertDaycare = db_insert($dcc_table)
->fields(array(
'entered' => $form_data['values']['date_entered'],
'exited' => $form_data['values']['date_exited'],
))
->execute();
}
//Ajaxed submit handler:
//Format sent to DB: mm-dd-yyyy
function fsa_roster_form_ajax_submit($form, $form_state) {
$dcc_table = 'dcc_'.$form_state['input']['sid'];
$insertRoster = db_insert($dcc_table)
->fields(array(
'entered' => $form_state['input']['date_entered'],
'exited' => $form_state['input']['date_exited'],
))
->execute();
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save Entry'),
'#prefix' => '<div id="modalSubmit">',
'#ajax' => array(//Remove this from your imagination for original submit handler
'callback' => 'fsa_daycare_roster_form_ajax_submit',
'wrapper' => 'msgBox',
'method' => 'replace',
'effect' => 'fade',
),
'#suffix' => '</div><script>addValidationEvents();</script>'
);