Usando a API do formulário e hook_form_alter () , como posso definir manualmente (forçar) os valores para cada tipo de campo de data do Drupal 7 usando um carimbo de data / hora Unix válido?
Quando o formulário é finalmente enviado, os tipos field_date são sempre matrizes vazias. Abaixo está o código quebrado do qual estou trabalhando.
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();
}
Devo mencionar que o widget de campos está definido como texto e seu formato é 'Ymd H: i: s'
Eu também tentei em date('Y-m-d H:i:s', time())
vez de time()
.
Exemplo de saída dpm ().
Também devo observar que, como solução alternativa, posso definir o campo se modificá-lo em hook_node_presave (). Para fazer isso, eu $node->field_date['und'][0]['value'] = date('Y-m-d H:i:s', $my_unix_timestamp);
ainda gostaria de entender como fazer isso usando hook_form_alter.
$form['field_date'][LANGUAGE_NONE][0]['#default_value']['value']
?Respostas:
Aqui está um código que trata o fuso horário do site certo para mim:
fonte
'timezone' => variable_get('date_default_timezone', 'UTC'),
?Cada tipo de campo de data espera um carimbo de data / hora de formato diferente (com base em como é armazenado no DataBase):
Essas informações foram referenciadas na seção Campo de data (data e hora, data e carimbo de data) no blog do fooninja.
Esse também é um ótimo recurso geral para criação de nós programáticos no Drupal 7.
fonte
Isso funcionou para mim.
fonte
O
time()
valor não funcionará neste nível.Você tem que usar algo como:
fonte
$form['field_date'][LANGUAGE_NONE][0]['#default_value']['value']
como mencionado acima?Para o material Date, podemos escrever um js para obter a data atual ...
fonte
Se você estiver usando o tipo de campo
Date (ISO format)
, use:fonte
Tente o seguinte:
fonte
Para quem lida com $ form_state e widget pop-up:
fonte
Para definir um valor para um campo de data, siga os códigos abaixo.
Usando hook_form_alter
Usando hook_node_submit ou hook_node_presave (salvando o valor no banco de dados)
Ou se você precisar salvar o valor de um campo personalizado (definido em hook_form_alter) em outro, consulte os códigos abaixo.
fonte
A resposta aceita estava me dando uma exceção DOP. Apenas uma simples chamada time () funcionou para um campo "datestamp"!
fonte
usei time () e funcionou bem ....
$ fc_item_wrapper-> field_data_pedido-> set (time ());
fonte