所以,我的表单中有这个元素:
<?php
$form['order']['date'] = array(
'#type' => 'date',
'#title' => 'Order date',
);
在表单提交函数中我得到了这样的数组:
[values] => Array
(
[date] => Array
(
[year] => 2010
[month] => 11
[day] => 27
)
)
我正在寻找一种将此数组保存在数据库中的简单方法,然后我希望能够从数据库中提取此日期,以便将其替换回编辑表单中。
是否有用于此的 drupal api 函数?
最佳答案
我认为 Date 模块将为您提供 API 调用来执行此操作。
在我的例子中,我的要求相当简单,我不想创建额外的模块依赖项,所以我使用以下内容来形成一个 PHP DateTime 对象:
$date_arr = $form_state['values']['date'];
if ($date_arr['year'] && $date_arr['month'] && $date_arr['day']) {
$date = new DateTime();
$date->setDate($date_arr['year'], $date_arr['month'], $date_arr['day']);
} else {
$date = NULL;
}
为了存储在数据库中(作为 UNIX 时间戳,Drupal 约定),我使用了 $date->getTimestamp()。
我不需要将日期放回到表格中,但如果需要,我会尝试类似的方法:
$query = db_query("select mydate from table");
while ($fields = db_fetch_array($query)) {
$date = new DateTime();
$date->setTimestamp($fields[0]);
$form['order']['date'] = array(
'#type' => 'date',
'#title' => 'Order date',
'#default_value' => array(
year => $date->format('Y'),
month => $date->format('m'),
day => $date->format('d'),
),
);
}
我还没有对此进行测试,因此您需要进行试验。
希望这对您有所帮助!
关于drupal - 将日期数组保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291861/