public static Datetime::processDatetime(&$element, FormStateInterface $form_state, &$complete_form)

Expande un tipo de elemento de fecha y hora en elementos de fecha y / o hora.

Todos los elementos de formulario están diseñados para tener valores predeterminados adecuados, por lo que se pueden omitir algunos o todos. Tanto los componentes de fecha como de hora se pueden configurar para que se puedan generar como elementos de fecha y hora HTML5 o no, según se desee.

Ejemplos de posibles configuraciones incluyen: HTML5 fecha y hora: #date_date_element = ‘fecha’; #date_time_element = ‘hora’; HTML5 datetime: #date_date_element = ‘datetime’; #date_time_element = ‘ninguno’; Solo hora HTML5: #date_date_element = ‘none’; #date_time_element = ‘hora’ No HTML5: #date_date_element = ‘texto’; #date_time_element = ‘texto’;

Configuraciones requeridas:

  • #valor por defecto: Un objeto DrupalDateTime, ajustado a la zona horaria local adecuada. Convertir una fecha almacenada en la base de datos de UTC a la zona local y volver a convertirla a UTC antes de almacenarla no se maneja aquí. Este elemento acepta una fecha como valor predeterminado y luego vuelve a convertir las cadenas de entrada del usuario en un nuevo objeto de fecha en el momento del envío. No se realiza ningún ajuste de zona horaria.

Las propiedades opcionales incluyen:

  • #date_date_format: Un formato de fecha string que describe el formato que debe mostrarse al usuario final para la fecha. Al usar elementos HTML5, el formato DEBE usar el formato HTML5 apropiado para ese elemento, ningún otro formato funcionará. Consulte la función format_date () para obtener una lista de los posibles formatos y estándares HTML5 para los requisitos de HTML5. Por defecto, el formato HTML5 correcto para el elemento elegido si se utiliza un elemento HTML5; de lo contrario, el valor predeterminado es entity_load (‘date_format’, ‘html_date’) -> getPattern ().
  • #date_date_element: El elemento de fecha. Las opciones son:
    • fecha y hora: Utilice el tipo de elemento de fecha y hora HTML5.
    • fecha y hora local: Utilice el tipo de elemento HTML5 datetime-local.
    • fecha: Utilice el tipo de elemento de fecha HTML5.
    • texto: Sin elemento HTML5, utilice un campo de texto normal.
    • ninguno: No muestra un elemento de fecha.
  • #date_date_callbacks: Matriz de devoluciones de llamada opcionales para el elemento de fecha. Se puede usar para agregar un selector de fecha de jQuery.
  • #date_time_element: El elemento de tiempo. Las opciones son:
    • tiempo: Utilice un tipo de elemento de hora HTML5.
    • texto: Sin elemento HTML5, utilice un campo de texto normal.
    • ninguno: No muestra un elemento de tiempo.
  • #date_time_format: Un formato de fecha string que describe el formato que debe mostrarse al usuario final por el tiempo. Al usar elementos HTML5, el formato DEBE usar el formato HTML5 apropiado para ese elemento, ningún otro formato funcionará. Consulte la función format_date () para obtener una lista de los posibles formatos y estándares HTML5 para los requisitos de HTML5. Por defecto, el formato HTML5 correcto para el elemento elegido si se utiliza un elemento HTML5; de lo contrario, el valor predeterminado es entity_load (‘date_format’, ‘html_time’) -> getPattern ().
  • #date_time_callbacks: Un array de devoluciones de llamada opcionales para el elemento de tiempo. Se puede usar para agregar un selector de tiempo de jQuery o una casilla de verificación ‘Todo el día’.
  • #date_year_range: Una descripción del rango de años que se permite, como ‘1900: 2050’, ‘-3: +3’ o ‘2000: +3’, donde el primer valor describe el año más antiguo y el segundo el último año del rango. . Un año en cualquier posición significa ese año específico. Un valor +/- describe un valor dinámico que es muchos años antes o después del año actual en el momento en que se muestra el formulario. Se utiliza en el rango de años de jQueryUI datepicker y la configuración de fecha mínima / máxima de HTML5. El valor predeterminado es ‘1900: 2050’.
  • #date_increment: El incremento que se utilizará para minutos y segundos, es decir, ’15’ solo se mostraría: 00,: 15,: 30 y: 45. Se utiliza para valores de paso de HTML5 y configuraciones de selector de fecha de jQueryUI. El valor predeterminado es 1 para mostrar cada minuto.
  • #date_timezone: La zona horaria local que se utilizará al crear fechas. Generalmente, esto debe dejarse vacío y se configurará correctamente para el usuario que usa el formulario. Útil si el valor predeterminado está vacío para designar una zona horaria deseada para las fechas creadas en el procesamiento de formularios. Si se proporciona una fecha predeterminada, este valor se ignorará y la zona horaria de la fecha predeterminada tendrá prioridad. Por defecto, el valor devuelto por drupal_get_user_timezone ().

Uso de ejemplo:

$form=array('#type'=>'datetime','#default_value'=>newDrupalDateTime('2000-01-01 00:00:00'),'#date_date_element'=>'date','#date_time_element'=>'none','#date_year_range'=>'2010:+3',);

Parámetros

array $ elemento: El elemento de formulario cuyo valor se está procesando.

Drupal Core Form FormStateInterface $ form_state: El estado actual del formulario.

array $ complete_form: La estructura completa del formulario.

Valor devuelto

array El elemento de formulario cuyo valor se ha procesado.

Expediente

core / lib / Drupal / Core / Datetime / Element /Datetime.php, línea 215

Clase

Fecha y hora
Proporciona un elemento de fecha y hora.

Espacio de nombres

Drupal Core Datetime Element

Código

publicstaticfunctionprocessDatetime(&$element,FormStateInterface$form_state,&$complete_form)$format_settings=array();// The value callback has populated the #value array.$date=!empty($element['#value']['object'])?$element['#value']['object']:NULL;// Set a fallback timezone.if($dateinstanceofDrupalDateTime)$element['#date_timezone']=$date->getTimezone()->getName();elseif(empty($element['#timezone']))$element['#date_timezone']=drupal_get_user_timezone();$element['#tree']=TRUE;if($element['#date_date_element']!='none')$date_format=$element['#date_date_element']!='none'?static::getHtml5DateFormat($element):'';$date_value=!empty($date)?$date->format($date_format,$format_settings):$element['#value']['date'];// Creating format examples on every individual date item is messy, and// placeholders are invalid for HTML5 date and datetime, so an example// format is appended to the title to appear in tooltips.$extra_attributes=array('title'=>t('Date (e.g. @format)',array('@format'=>static::formatExample($date_format))),'type'=>$element['#date_date_element'],);// Adds the HTML5 date attributes.if($dateinstanceofDrupalDateTime&&!$date->hasErrors())$html5_min=clone($date);$range=static::datetimeRangeYears($element['#date_year_range'],$date);$html5_min->setDate($range[0],1,1)->setTime(0,0,0);$html5_max=clone($date);$html5_max->setDate($range[1],12,31)->setTime(23,59,59);$extra_attributes+=array('min'=>$html5_min->format($date_format,$format_settings),'max'=>$html5_max->format($date_format,$format_settings),);$element['date']=array('#type'=>'date','#title'=>t('Date'),'#title_display'=>'invisible','#value'=>$date_value,'#attributes'=>$element['#attributes']+$extra_attributes,'#required'=>$element['#required'],'#size'=>max(12,strlen($element['#value']['date'])),'#error_no_message'=>TRUE,'#date_date_format'=>$element['#date_date_format'],);// Allows custom callbacks to alter the element.if(!empty($element['#date_date_callbacks']))foreach($element['#date_date_callbacks']as$callback)if(function_exists($callback))$callback($element,$form_state,$date);if($element['#date_time_element']!='none')$time_format=$element['#date_time_element']!='none'?static::getHtml5TimeFormat($element):'';$time_value=!empty($date)?$date->format($time_format,$format_settings):$element['#value']['time'];// Adds the HTML5 attributes.$extra_attributes=array('title'=>t('Time (e.g. @format)',array('@format'=>static::formatExample($time_format))),'type'=>$element['#date_time_element'],'step'=>$element['#date_increment'],);$element['time']=array('#type'=>'date','#title'=>t('Time'),'#title_display'=>'invisible','#value'=>$time_value,'#attributes'=>$element['#attributes']+$extra_attributes,'#required'=>$element['#required'],'#size'=>12,'#error_no_message'=>TRUE,);// Allows custom callbacks to alter the element.if(!empty($element['#date_time_callbacks']))foreach($element['#date_time_callbacks']as$callback)if(function_exists($callback))$callback($element,$form_state,$date);return$element;