Menggunakan Formulir API dan hook_form_alter () , bagaimana saya bisa secara manual mengatur (memaksa) nilai untuk setiap jenis bidang tanggal Drupal 7 menggunakan Timestamp Unix yang valid?
Ketika formulir akhirnya mengirimkan tipe field_date selalu kosong array. Di bawah ini adalah kode rusak tempat saya bekerja.
hook_form_alter(&$form, &$form_state, $form_id) {
// http://drupal.org/node/1455576 - Date
$form['field_date'][LANGUAGE_NONE][0]['value'] = time();
// http://drupal.org/node/1455576 - Date (ISO Format)
$form['field_date_iso_format'][LANGUAGE_NONE][0]['value'] = time();
// http://drupal.org/node/1455576 - Date (Unix Timestamp)
$form['field_date_unix_timestamp'][LANGUAGE_NONE][0]['value'] =time();
}
Saya harus menyebutkan widget bidang diatur ke teks dan formatnya adalah 'Ymd H: i: s'
Saya juga mencoba date('Y-m-d H:i:s', time())
bukan time()
.
Contoh output dpm ().
Saya juga harus mencatat bahwa sebagai solusi saya dapat mengatur bidang jika saya memodifikasinya di hook_node_presave (). Untuk melakukan ini saya mengatur $node->field_date['und'][0]['value'] = date('Y-m-d H:i:s', $my_unix_timestamp);
saya masih ingin memahami bagaimana melakukan ini menggunakan hook_form_alter sebagai gantinya.
$form['field_date'][LANGUAGE_NONE][0]['#default_value']['value']
?Jawaban:
Berikut adalah kode yang memperlakukan zona waktu situs tepat untuk saya:
sumber
'timezone' => variable_get('date_default_timezone', 'UTC'),
?Setiap tipe bidang tanggal mengharapkan cap waktu yang diformat berbeda (berdasarkan cara penyimpanannya di DataBase):
Informasi ini dirujuk dari bagian berlabel Tanggal bidang (datetime, date, datestamp) di blog fooninja.
Ini juga merupakan sumber daya umum yang bagus untuk pembuatan simpul program di Drupal 7.
sumber
Ini berhasil untuk saya.
sumber
The
time()
nilai tidak akan bekerja pada tingkat ini.Anda harus menggunakan sesuatu seperti:
sumber
$form['field_date'][LANGUAGE_NONE][0]['#default_value']['value']
seperti yang disebutkan di atas?Untuk hal-hal Date kita bisa menulis js untuk mendapatkan tanggal saat ini ...
sumber
Jika Anda menggunakan jenis bidang
Date (ISO format)
maka gunakan:sumber
Coba ini:
sumber
Bagi mereka yang berurusan dengan $ form_state dan widget popup:
sumber
Untuk menetapkan nilai ke bidang tanggal, ikuti kode di bawah ini.
Menggunakan hook_form_alter
Menggunakan hook_node_submit atau hook_node_presave (Menyimpan nilai ke database)
Atau jika Anda perlu menyimpan nilai dari satu bidang khusus (didefinisikan dalam hook_form_alter) ke yang lain, lihat kode di bawah ini.
sumber
Jawaban yang diterima memberi saya Pengecualian PDO. Hanya panggilan waktu () sederhana yang berfungsi untuk bidang "datestamp"!
sumber
menggunakan waktu () dan bekerja OK ....
$ fc_item_wrapper-> field_data_pedido-> set (time ());
sumber