Tipo de campo date

Un campo que permite al usuario modificar información de fecha a través de una variedad de diferentes elementos HTML.

Los datos subyacentes utilizados para este tipo de campo pueden ser un objeto DateTime, una cadena, una marca de tiempo o un arreglo. Siempre y cuando la opción input se configure correctamente, el campo se hará cargo de todos los detalles.

El campo se puede reproducir como un cuadro de texto, tres cuadros de texto (mes, día y año) o tres cuadros de selección (ve la opción widget).

Underlying Data Type can be DateTime, string, timestamp, or array (see the input option)
Rendered as single text box or three select fields
Options
Inherited options
Parent type field (if text), form otherwise
Class Symfony\Component\Form\Extension\Core\Type\DateType

Uso básico

Este tipo de campo es altamente configurable, pero fácil de usar. Las opciones más importantes son input y widget.

Supongamos que tienes un campo publishedAt cuya fecha subyacente es un objeto DateTime. El siguiente código configura el tipo date para ese campo como tres campos de opciones diferentes:

$builder->add('publishedAt', 'date', array(
    'input'  => 'datetime',
    'widget' => 'choice',
));

La opción input se debe cambiar para que coincida con el tipo de dato de la fecha subyacente. Por ejemplo, si los datos del campo publishedAt eran una marca de tiempo Unix, habría la necesidad de establecer input a timestamp:

$builder->add('publishedAt', 'date', array(
    'input'  => 'timestamp',
    'widget' => 'choice',
));

El campo también es compatible con array y string como valores válidos de la opción input.

Opciones del campo

widget

tipo: string predefinido: choice

La forma básica en que se debe reproducir este campo. Puede ser una de las siguientes:

  • choice: pinta tres selectores. The order of the selects is defined in the format option.
  • text: pinta tres campos de entrada de tipo text (para el mes, día y año).
  • single_text: renders a single input of type date (text in Symfony 2.0). User’s input is validated based on the format option.

Prudencia

If timestamp is used, DateType is limited to dates between Fri, 13 Dec 1901 20:45:54 GMT and Tue, 19 Jan 2038 03:14:07 GMT on 32bit systems. This is due to a limitation in PHP itself.

input

tipo: string predefinido: datetime

El formato del dato input —es decir, el formato de la fecha en que se almacena en el objeto subyacente. Los valores válidos son los siguientes:

  • string (por ejemplo 2011-06-05)
  • datetime (un objeto DateTime)
  • array (por ejemplo array('year' => 2011, 'month' => 06, 'day' => 05))
  • timestamp (por ejemplo 1307232000)

El valor devuelto por el formulario también se normaliza de nuevo a este formato.

Prudencia

If timestamp is used, DateType is limited to dates between Fri, 13 Dec 1901 20:45:54 GMT and Tue, 19 Jan 2038 03:14:07 GMT on 32bit systems. This is due to a limitation in PHP itself.

empty_value

tipo: string o array

Si la opción de elemento gráfico se ajusta a choice, entonces este campo se reproduce como una serie de cajas de selección. Puedes utilizar la opción empty_value para agregar una entrada «en blanco» en la parte superior de cada caja de selección:

$builder->add('dueDate', 'date', array(
    'empty_value' => '',
));

Alternativamente, puedes especificar una cadena que se mostrará en lugar del valor «en blanco»:

$builder->add('dueDate', 'date', array(
    'empty_value' => array('year' => 'Year', 'month' => 'Month', 'day' => 'Day')
));

years

tipo: array predeterminado: cinco años antes a cinco años después del año en curso

Lista de años disponibles para el tipo de campo year. Esta opción sólo es relevante cuando la opción widget está establecida en choice.

months

tipo: array predeterminado: 1 a 12

Lista de los meses disponibles para el tipo de campo month. Esta opción sólo es relevante cuando la opción widget está establecida en choice.

days

tipo: array predeterminado: 1 a 31

Lista de los días disponibles para el tipo de campo day. Esta opción sólo es relevante cuando la opción widget está establecida en choice:

'days' => range(1,31)

format

tipo: integer o string predefinido: IntlDateFormatter::MEDIUM

Opción pasada a la clase IntlDateFormatter, utilizada para transformar la entrada del usuario al formato adecuado. Esto es crítico cuando la opción widget se configura a single_text, y necesitas definir la forma en que el usuario debe introducir los datos. De manera predeterminada, el formato se determina basándose en la configuración regional del usuario actual; significa que el formato esperado será diferente para distintos usuarios. La puedes redefinir pasando el formato como una cadena.

Para más información sobre formatos válidos, consulta la Sintaxis de formatos Date/Time. For example, to render a single text box that expects the user to enter yyyy-MM-dd, use the following options:

$builder->add('date_created', 'date', array(
    'widget' => 'single_text',
    'format' => 'yyyy-MM-dd',
));

data_timezone

tipo: string predefinido: la zona horaria del sistema

La zona horaria en que se almacenan los datos entrantes. Esta debe ser una de las zonas horarias compatibles con PHP

user_timezone

tipo: string predefinido: la zona horaria del sistema

La zona horaria para mostrar los datos al usuario (y por lo tanto también los datos que el usuario envía). Esta debe ser una de las zonas horarias compatibles con PHP

Opciones heredadas

Estas opciones las hereda del tipo field:

invalid_message

tipo: string predefinido: This value is not valid (Este valor no es válido)

Este es el mensaje para el error de validación utilizado cuando se determina que los datos ingresados en este campo no tienen sentido (es decir, falla la validación).

Esto puede ocurrir, por ejemplo, si el usuario introduce una cadena sin sentido en el campo time que no se puede convertir a una hora real o si el usuario introduce una cadena (por ejemplo, manzana) en un campo de número.

La validación (con la lógica del negocio) normal (por ejemplo, al establecer una longitud mínima en un campo) la debes establecer usando mensajes de validación con tus reglas de validación (referencia).

invalid_message_parameters

tipo: array predeterminado: array()

Al establecer la opción invalid_message, posiblemente sea necesario que incluyas algunas variables en la cadena. Esto se puede lograr agregando marcadores de posición y variables en esa opción:

$builder->add('some_field', 'some_type', array(
    // ...
    'invalid_message'            => 'You entered an invalid value - it should include %num% letters',
    'invalid_message_parameters' => array('%num%' => 6),
));

read_only

Nuevo en la versión 2.1: The read_only option was changed in 2.1 to render as a readonly HTML attribute. Previously, it rendered as a disabled attribute. Use the disabled option if you need the old behavior.

tipo: Boolean predeterminado: false

If this option is true, the field will be rendered with the readonly attribute so that the field is not editable.

disabled

Nuevo en la versión 2.1: The disabled option is new in version 2.1

type: boolean default: false

Si no deseas que un usuario pueda modificar el valor de un campo, puedes establecer la opción disabled en true. Cualquier valor recibido será omitido.

These options inherit from the date type:

virtual

tipo: boolean default: false

This option determines if the form will be mapped with data. This can be useful if you need a form to structure the view. See Cómo usar la opción virtual en los campos de formulario.

Bifúrcame en GitHub