Используя API форм и hook_form_alter () , как я могу вручную установить (принудительно) значения для каждого из типов полей даты в Drupal 7, используя действительную метку времени Unix?
Когда форма наконец отправляется, типы field_date всегда являются пустыми массивами. Ниже приведен неработающий код, с которого я работаю.
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();
}
Я должен упомянуть, что виджет полей установлен в текст и имеет формат «Ymd H: i: s»
Я также попытался date('Y-m-d H:i:s', time())
вместо time()
.
Пример вывода dpm ().
Я также должен отметить, что в качестве обходного пути я могу установить поле, если я изменю его в hook_node_presave (). Для этого я $node->field_date['und'][0]['value'] = date('Y-m-d H:i:s', $my_unix_timestamp);
хотел бы понять, как это сделать, используя вместо этого hook_form_alter.
$form['field_date'][LANGUAGE_NONE][0]['#default_value']['value']
?Ответы:
Вот код, который обрабатывает часовой пояс сайта для меня:
источник
'timezone' => variable_get('date_default_timezone', 'UTC'),
?Каждый тип поля даты ожидает метку времени с различным форматированием (в зависимости от того, как она хранится в базе данных):
На эту информацию ссылались из раздела « Поле даты» (datetime, date, datetamp) в блоге fooninja.
Это также отличный общий ресурс для создания программных узлов в Drupal 7.
источник
Это сработало для меня.
источник
time()
Значение не будет работать на этом уровне.Вы должны использовать что-то вроде:
источник
$form['field_date'][LANGUAGE_NONE][0]['#default_value']['value']
как указано выше?Для материала Date мы могли бы написать js для получения текущей даты ...
источник
Если вы используете тип поля,
Date (ISO format)
используйте:источник
Попробуй это:
источник
Для тех, кто имеет дело с $ form_state и всплывающим виджетом:
источник
Чтобы установить значение в поле даты, следуйте приведенным ниже кодам.
Использование hook_form_alter
Использование hook_node_submit или hook_node_presave (сохранение значения в базе данных)
Или, если вам нужно сохранить значение одного настраиваемого поля (определенного в hook_form_alter) в другое, см. Коды ниже.
источник
Принятый ответ дал мне исключение PDO. Только простой вызов time () работал для поля "datetamp"!
источник
использовал время () и работал нормально ....
$ Fc_item_wrapper-> field_data_pedido-> набор (время ());
источник