# Tipos de campos

Lyra incluye los tipos de datos más utilizados.

# Campo Texto

El campo de texto es el más sencillo de los campos editables, en él se mostrará una entrada de texto.

Text::make('Name')

# Campo URL

Muestra un enlace clickable en las vistas index y show.

Url::make('Link')

# Campo Slug

Muestra un campo de texto con un filtro de patrón tipo slug.

Slug::make('Slug')

Además de la funcionalidad del campo Texto, cuenta con el método sluglify para autogenerar el slug desde otro campo existente.

Este método requiere el nombre de la columna del campo origen.

Text::make('Title'),
Slug::make('Slug')->sluglify('title'),

El slug se creará automáticamente mientras escribe en el campo de origen, siempre y cuando no haya ningún valor previo en el campo Slug al momento de acceder al formulario.

# Campo Textarea

Muestra un elemento textarea con posibilidad de expandirlo verticalmente.

Textarea::make('Description')

# Campo Contraseña

Muestra un campo de entrada tipo contraseña, siempre muestra un placeholder aunque tenga valor y guarda un Hash de la contraseña.

Password::make('Password')

# Campo Fecha

Muestra un campo de entrada tipo fecha

Date::make('Birth')

# Campo DateTime

Muestra un campo tipo datetime el cual cuenta con fecha y hora.

DateTime::make('Published At')

# Campo Fichero

Este campo permite la subida de cualquier tipo de fichero.

File::make('Attachment')

# Campo Imagen

Permite la subida de imágenes ofreciendo una previsualización de la misma.

Image::make('Thumbnail')

# Campo Markdown

Muestra el editor EasyMDE de Markdown.

Markdown::make('Body')

# Campo Boleano

Este campo se utiliza para representar un valor booleano, muestra un ✔️ cuando el valor es verdadero, y un ❌ si el valor es falso.

Boolean:make('Active')

Puede establecer los valores true y false si, por ejemplo, tiene un campo enum en su base de datos, para ello debe utilizar el método values.

Este método requiere dos parámetros, el primero será el valor true y el segundo será el valor false.

Boolean:make('Status')->values('ACTIVE', 'FALSE')

Además, puede establecer si desea que se marque por defecto o no. Si quiere que se marque debe usar el método checked.

Boolean:make('Active')->checked()

# Campo Select

Este campo muestra un desplegable seleccionable con múltiples opciones, que las opciones deben ser añadidas al campo utilizando el método options.

Select::make('Status')->options([
  'Draft', 'Pending', 'Published'
])

También puede utilizar un array asociativo, la clave se guardará en la base de datos y el valor se mostrará en el desplegable.

Select::make('Status')->options([
  'draft' => 'Draft',
  'pending' => 'Publish pending', 'published' => 'Published'
])

Para definir un valor por defecto debe utilizar el método default.

Select::make('Status')->options([
  'Draft', 'Pending', 'Published'
])->default('Draft')
Select::make('Status')->options([ 'draft' => 'Draft',
  'pending' => 'Publish pending', 'published' => 'Published'
])->default('draft')

# Campo Radio

Este campo muestra un grupo de botones radio, debe especificar las opciones disponibles utilizado el método options.

Radio::make('Status')->options(['Draft', 'Pending', 'Published'])

También puede utilizar un array asociativo, la clave se guardará en la base de datos y el valor se mostrará al lado de cada botón radio.

Radio::make('Status')->options([
  'draft' => 'Draft',
  'pending' => 'Publish pending',
  'published' => 'Published'
])

Para definir un valor por defecto debe utilizar el método default.

Radio::make('Status')->options([
  'Draft', 'Pending', 'Published'
])->default('Draft')
Radio::make('Status')->options([
  'draft' => 'Draft',
  'pending' => 'Publish pending',
  'published' => 'Published'
])->default('draft')

# Campo de cabecera

Este campo no corresponde a ninguna columna de la base de datos. Muestra un separador para agrupar diferentes campos en las vistas show y edit.

Heading::make('Meta')

También puede mostrar código HTML el cual será renderizado por el navegador del usuario.

Heading::make('Extra data - <span style="color:red">Important</span>')

# Campo Código

El campo mostrará el editor CodeMirror.

Este campo soporta múltiples modos, para especificar un modo debe utilizar el método mode.

Los modos disponibles son:

Code::make('Body')->mode('htmlmixed')

Si desea utilizar JSON en este campo, debe utilizar el método json.

Code::make('Options')->json()